Benutzerdefinierte WordPress-Galerie-Option

7

Ich möchte der Standardregisterkarte der WordPress-Galerie eine benutzerdefinierte Option hinzufügen. Ich brauche etwas Einfaches, nur ein Dropdown-Menü, um den angebotenen Stil hinzuzufügen. Dies würde der Galerie auf der Clientseite und der Bearbeitungsansicht im Admin-Teil eine vordefinierte Klasse hinzufügen.

Geben Sie hier die Bildbeschreibung ein

Gibt es eine Möglichkeit, dies zu tun, ohne WordPress-Code zu hacken?

Ich habe hier einen Beitrag gesehen: Option zum Abschnitt " Galerieeinstellungen" hinzufügen, die zeigt, wie man das macht, was ich nicht will, aber ich habe es versucht und es funktioniert nicht. Ich denke, das liegt daran, dass das Beispiel für die Version ~ 3.5 ist und ich verwende 4.1.1 Wie kann ich das mit meiner aktuellen Version machen?

antanas_sepikas
quelle
Welche Option möchten Sie genau hinzufügen? Was war der vollständige Code, den Sie ausprobiert haben?
Michael

Antworten:

5

WordPress macht es nicht sehr einfach, Aspekte des Galerie-Shortcodes zu ändern . Einige Zuschreibungen:

Die andere Option neben birgires (soweit ich weiß) besteht darin, den Shortcode so gut wie neu zu erstellen, indem vorhandener Code in die Datei cores media.php kopiert wird, was schmerzhaft ist.


Einige Dinge, die bei der anfänglichen additional_gallery_settings()Funktion von Peterbra zu beachten sind :

  • Das tmpl-Präfix ist erforderlich.
  • Ihr Feld sollte ein data-settingAttribut haben

Wirf einfach den folgenden Code in deine functions.phpDatei:

/**
 * Set up the new field in the media module.
 *
 * @return void
 */
function additional_gallery_settings() {
  ?>

    <script type="text/html" id="tmpl-custom-gallery-setting">
        <span>Style</span>
        <select data-setting="style">
            <option value="default-style">Default Style</option>
            <option value="custom-style">Custom Style</option>
            <option value="ie7-style">IE7 Style</option>
        </select>
    </script>

    <script type="text/javascript">
        jQuery( document ).ready( function() {
            _.extend( wp.media.gallery.defaults, {
                style: 'default-style'
            } );

            wp.media.view.Settings.Gallery = wp.media.view.Settings.Gallery.extend( {
                template: function( view ) {
                    return wp.media.template( 'gallery-settings' )( view )
                         + wp.media.template( 'custom-gallery-setting' )( view );
                }
            } );
        } );
    </script>

  <?php
}
add_action( 'print_media_templates', 'additional_gallery_settings' );

/**
 * HTML Wrapper - Support for a custom class attribute in the native gallery shortcode
 *
 * @param string $html
 * @param array $attr
 * @param int $instance
 *
 * @return $html
 */
function customize_gallery_abit( $html, $attr, $instance ) {

    if( isset( $attr['style'] ) && $style = $attr['style'] ) {
        // Unset attribute to avoid infinite recursive loops
        unset( $attr['style'] ); 

        // Our custom HTML wrapper
        $html = sprintf( 
            '<div class="wpse-gallery-wrapper-%s">%s</div>',
            esc_attr( $style ),
            gallery_shortcode( $attr )
        );
    }

    return $html;
}
add_filter( 'post_gallery', 'customize_gallery_abit', 10, 3 );
Howdy_McGee
quelle
3
sieht aus wie "wp.media.gallery.defaults" ist jetzt "wp.media.galleryDefaults"
locomo