修改媒体管理器时的最佳方法

时间:2015-01-03 作者:Stewarty

我正在尝试编辑媒体管理器,以允许在“链接到”选择字段中选择新选项。

此主干模板当前在媒体模板中定义。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 manager此部分的插件发生潜在冲突。

media.view.Settings.Gallery = media.view.Settings.Gallery.extend({
    template: media.template(\'caffeine-gallery-settings\'),
另一种选择是,我通过jQuery/similar向select菜单添加新选项。该应用程序已经依赖JavaScript工作,因此体验不会降低。但这并不是做出这种改变的正确方式。这似乎违背了脊梁和文字出版社的精神。

我的理想是在主干模板中有WordPress过滤器(因为它毕竟只是一个PHP文件,所以是可行的),可以将新选项添加到这个选择菜单中。

在我的推理之外,这些选项中哪一个是最好的?

1 个回复
SO网友:tonymazz

这是我为这类事情准备的代码片段。

<?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

}); ?>

结束

相关推荐

Split Content and Gallery

有没有办法将帖子内容和库短代码分开。我想在我的正常内容之外显示库,无论其放置方式或位置如何。我可以用它来获取短代码本身:if(has_shortcode(get_the_content(), \'gallery\')){ $pattern = get_shortcode_regex(); preg_match(\"/$pattern/s\", get_the_content(), $matches); echo do_shortcode($matches[