Erweitern Sie den Media Manager für die Galerie

Ich möchte den Media Editor nach WordPress 3.5 in der Galerieansicht erweitern.
Ich möchte ein neues Auswahlfeld auf der rechten Seite hinzufügen und die ausgewählten Werte an den Galerie-Shortcode senden.

Bildbeschreibung hier eingeben

Ich denke, die function wp.media.gallery in wp-includes/js/media-editor.js ist die Standardfunktion zum Einfügen des Galerie-Shortcodes.

Ich möchte einen neuen Parameter hinzufügen und die Werte des Parameters stammen aus dem Auswahlfeld im Media Manager.

Ich habe mit verschiedenen Quellen gespielt, vor allem von dieser Frage , aber Backbone ist sehr neu für mich und ich verstehe nicht, wie es funktioniert. Ich habe auch mit dem hook print_media_templates , aber kein Ergebnis in der Medienansicht.

Welche Haken sollte ich verwenden?

Solutions Collecting From Web of "Erweitern Sie den Media Manager für die Galerie"

Eine kleine Quelle, vielleicht für ein Plugin, um die Lösung zu erstellen. Zuerst enthält der PHP-Teil das Javascript für den Button im Media Manager. Ist mehr brauchbare Antwort, aber die Antwort von @One Trick Pony war schaffen und die richtige Richtung und JS-Lösung.

Sehen Sie das Ergebnis auf dem Bild: Bildbeschreibung hier eingeben

Der resultierende Shortcode, wenn die Größe nicht Standardgröße ist: Bildbeschreibung hier eingeben

Der Haken print_media_templates ist der richtige Ort für die Schaltfläche, das Markup. Wurde auch ein Skript in die Warteschlange gestellt, da gibt es die Lösung zum Anhängen der Steuerelemente.

 class Custom_Gallery_Setting { /** * Stores the class instance. * * @var Custom_Gallery_Setting */ private static $instance = null; /** * Returns the instance of this class. * * It's a singleton class. * * @return Custom_Gallery_Setting The instance */ public static function get_instance() { if ( ! self::$instance ) self::$instance = new self; return self::$instance; } /** * Initialises the plugin. */ public function init_plugin() { $this->init_hooks(); } /** * Initialises the WP actions. * - admin_print_scripts */ private function init_hooks() { add_action( 'wp_enqueue_media', array( $this, 'wp_enqueue_media' ) ); add_action( 'print_media_templates', array( $this, 'print_media_templates' ) ); } /** * Enqueues the script. */ public function wp_enqueue_media() { if ( ! isset( get_current_screen()->id ) || get_current_screen()->base != 'post' ) return; wp_enqueue_script( 'custom-gallery-settings', plugins_url( 'js/custom-gallery-setting.js', __FILE__ ), array( 'media-views' ) ); } /** * Outputs the view template with the custom setting. */ public function print_media_templates() { if ( ! isset( get_current_screen()->id ) || get_current_screen()->base != 'post' ) return; ?>  < ?php } } // Put your hands up... add_action( 'admin_init', array( Custom_Gallery_Setting::get_instance(), 'init_plugin' ), 20 ); 

Die folgende Quelle ist das Javascript, in der Beispielquelle in PHP die Datei custom-gallery-setting.js

 /** * Custom Gallery Setting */ ( function( $ ) { var media = wp.media; // Wrap the render() function to append controls media.view.Settings.Gallery = media.view.Settings.Gallery.extend({ render: function() { media.view.Settings.prototype.render.apply( this, arguments ); // Append the custom template this.$el.append( media.template( 'custom-gallery-setting' ) ); // Save the setting media.gallery.defaults.size = 'thumbnail'; this.update.apply( this, ['size'] ); return this; } } ); } )( jQuery ); 

Wenn Sie wirklich Backbone-Vorlagen verwenden möchten, ist Ihr Hook korrekt.

Ich würde jQuery verwenden, um die HTML-Vorlage einzufügen, anstatt die function template() für die Ansicht der Galerieeinstellungen zu überschreiben. Aber ich denke, das weißt du bereits, also werde ich die Backbone-Version veröffentlichen:

 add_action('print_media_templates', function(){ // define your backbone template; // the "tmpl-" prefix is required, // and your input field should have a data-setting attribute // matching the shortcode name ?>   < ?php });