Лучший подход при изменении Media Manager

Я пытаюсь отредактировать Media Manager, чтобы разрешить выбор новой опции в поле «Ссылка на».

Этот шаблон базовой линии в настоящее время определяется в media-template.php

<label class="setting">
    <span><?php _e('Link To'); ?></span>
        <select class="link-to"
            data-setting="link"
            <# if ( data.userSettings ) { #>
                data-user-setting="urlbutton"
            <# } #>>

            <option value="post" <# if ( ! wp.media.galleryDefaults.link || 'post' == wp.media.galleryDefaults.link ) {
                #>selected="selected"<# }
            #>>
                <?php esc_attr_e('Attachment Page'); ?>
            </option>
            <option value="file" <# if ( 'file' == wp.media.galleryDefaults.link ) { #>selected="selected"<# } #>>
                <?php esc_attr_e('Media File'); ?>
            </option>
            <option value="none" <# if ( 'none' == wp.media.galleryDefaults.link ) { #>selected="selected"<# } #>>
                <?php esc_attr_e('None'); ?>
            </option>
        </select>
    </label>

Я могу скопировать этот шаблон в свой плагин, внести свои изменения и расширить media.view.Settings.Gallery, чтобы добавить мои новые функции, но это может вызвать потенциальные конфликты с другими плагинами, которые также хотят изменить эту часть медиа-менеджера.

media.view.Settings.Gallery = media.view.Settings.Gallery.extend({
    template: media.template('caffeine-gallery-settings'),

Альтернативой является то, что я добавляю новую опцию в меню выбора через jQuery /подобный. Приложение уже зависит от работы JavaScript, поэтому опыт не ухудшается. Это не похоже на правильный способ сделать это изменение. Кажется, что это противоречит духу как Backbone, так и WordPress.

Моим идеалом является то, что в шаблоне Backbone будет использоваться фильтр WordPress (возможно, это просто файл PHP), который позволит добавлять новые опции в это меню выбора.

Вне моего рассуждения, какой из этих вариантов лучше?

7 голосов | спросил Stewarty 3 Jpm1000000pmSat, 03 Jan 2015 16:00:53 +030015 2015, 16:00:53

1 ответ


2

Это мой переход к фрагментам для таких вещей.

<?php 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
  ?>
 <script type="text/html" id="tmpl-my-custom-gallery-setting">
   <label class="setting">
   <span><?php _e('My setting'); ?></span>
   <select data-setting="my_custom_attr">
     <option value="foo"> Foo </option>
     <option value="bar"> Bar </option>
     <option value="default_val"> Default Value </option>
    </select>
  </label>
</script>

 <script>

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);
    }
  });

});

  </script>
  <?php

}); ?>
ответил tonymazz 13 FebruaryEurope/MoscowbFri, 13 Feb 2015 19:39:07 +0300000000pmFri, 13 Feb 2015 19:39:07 +030015 2015, 19:39:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132