Zulassen mehrerer Vorlagenansichten auf der Seite “Galerieeinstellungen” bei Verwendung des visuellen Editors

Ich versuche, diese Antwort zu erweitern , indem ich es möglich mache, ShortcodeAttribute von der Benutzeroberfläche zu wechseln und das Galerie-Markup basierend auf diesen Attributen zu ändern.

 

In diesem Fall, wenn owl auf ” true gesetzt ist, würde ein Eulenkarussell in der Galerie rendern – was auch der Fall ist. Aber wie bei jedem Shortcode müssen Sie sich die richtigen Attribute merken. Da ich auch die Fähigkeit haben möchte, Karussells gegen iDangerous Swiper auszutauschen, ist die Attribut- owl aufgrund des unterstützten Feature-Sets begrenzt und schwer zu merken.

Glücklicherweise fand ich einen Ausschnitt, um ~ benutzerdefinierte Felder ~ mit diesem Beispiel in die Galerie einzufügen .

 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 ?>     jQuery(document).ready(function(){ // add your shortcode attribute and its default value to the // gallery settings list; $.extend should work as well... _.extend(wp.media.gallery.defaults, { my_custom_attr: 'default_val' }); // merge default gallery settings template with yours wp.media.view.Settings.Gallery = wp.media.view.Settings.Gallery.extend({ template: function(view){ return wp.media.template('gallery-settings')(view) + wp.media.template('my-custom-gallery-setting')(view); } }); });  <?php }); 

Leider ist die Post> 2 Jahre alt und geschlossen.

Die Herausforderung ist: Wenn ich die Vorlagenansicht durch meine Einstellungen ersetze, ist es unmöglich, die Einstellungen eines anderen Plugins oder Themes zu erweitern. Die letzte als template: festgelegte Ansicht ist immer der Gewinner.

Die Frage : Wie kann ich das kodieren, um eine größere Flexibilität zu ermöglichen, wo nicht nur meine Einstellungen angezeigt werden, sondern ich auch die Fähigkeit für andere Plugins / Theme-Modifikationen nicht verbiete?

Solutions Collecting From Web of "Zulassen mehrerer Vorlagenansichten auf der Seite “Galerieeinstellungen” bei Verwendung des visuellen Editors"

Es scheint, dass die Vorlagen in Skriptform vorliegen

  

Um die obige Vorlage zu rendern würde erfordern

 wp.media.template('my-custom-gallery-setting')(view) 

Da wir die template: ersetzen template: Logik, dann müssen wir nur eine Liste von Vorlagen-IDs speichern.

 if (!wp.media.gallery.templates) wp.media.gallery.templates = ['gallery-settings']; wp.media.gallery.templates.push('my-custom-gallery-setting'); 

Dann durchlaufen Sie alle verfügbaren Ansichten

 wp.media.view.Settings.Gallery = wp.media.view.Settings.Gallery.extend({ template: function (view) { var output = ''; for (var i in wp.media.gallery.templates) { output += wp.media.template(wp.media.gallery.templates[i])(view); } return output; } }); 

ERGEBNIS

Daher muss sich der Client die Attribute des Shortcodes nicht merken, um die Galerie zu ändern, da alle Optionen der Benutzeroberfläche als Dropdown-Listen hinzugefügt wurden.

 [gallery link="none" type="owl" shape="square" ids="7228,7227,7226,7128,7127"] 

Als Bonus wird die Liste der unterstützten Typen durch einen Filter geleitet, sodass Sie die Anzahl der Auswahlmöglichkeiten von einer Drittanbieterquelle hinzufügen oder reduzieren können.

Bildbeschreibung hier eingeben

ORT A

 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 $gallery_types = apply_filters('print_media_templates_gallery_settings_types', array( 'swiper' => ' Swiper', 'owl' => ' Owl Carousel', 'revolution' => ' Revolution Slider', 'default_val' => ' Default')); ?>   < ?php }); 

ORT B

 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 $gallery_types = apply_filters('print_media_templates_gallery_settings_shapes', array( 'circle' => ' Circle', 'rectangle' => ' Rectangle', 'square' => ' Square', 'default_val' => ' Default')); ?>   < ?php });