从媒体上传器(wp.media)模式使用POST元过滤媒体

时间:2020-01-27 作者:gordie

我想有一个媒体上传模式,只显示具有特定post meta的图像媒体,比如“my\\u image\\u meta”。我怎样才能做到这一点?这是我的实际代码,它只是过滤图像:

    var mediaUploader;
    var $inputVal = $(\'input[name="geoposts_overlay_ids"]\');
    var $inputBt = $(\'#geoposts_overlays_select\');
    $inputBt.click(function(e) {
      e.preventDefault();
        if (mediaUploader) {
        mediaUploader.open();
        return;
      }
      mediaUploader = wp.media.frames.file_frame = wp.media({
        title: overlayUploadL10n.title,
        button: {
          text: overlayUploadL10n.button
        },
        library: {
          type: [ \'image\' ]
        },
        multiple: true
      });
      mediaUploader.on(\'select\', function() {
        var selection = mediaUploader.state().get(\'selection\');
        var media_ids = [];

        selection.map( function( getImage ) {
          var media = getImage.toJSON();
          media_ids.push(media.id);
        })

        var media_ids_str = media_ids.join();
        $inputVal.val(media_ids_str);
      });

      mediaUploader.open();
    });

1 个回复
最合适的回答,由SO网友:Vitauts Stočka 整理而成

最简单的部分是过滤附件列表。使用此代码

add_filter(\'ajax_query_attachments_args\', function($args) {
    $args[\'meta_query\'] = array(
        array(
            \'key\' => \'my_image_meta\',
            \'value\' => $some_value,
            \'compare\' => \'=\'
        )
    );
    return $args;
});
但是,此代码将过滤所有媒体库查询。您可能需要从中传递一些附加参数wp.media. This answer 可能会有帮助。

相关推荐

主题定制--当使用php变量时,如何在外部存储javascript?

EDIT: Complete re-write在过去的几周里,我一直在为我的主题开发一个自定义扩展。这是我第一次用Wordpress“开发”。所有的工作都很好,我对结果的功能很满意,尽管它需要一些整理。我希望将我的js函数移到一个外部文件-自定义。js。原始格式:main-block.php$custom1 = $custom_meta[\'custom1\']; <form name=\"customForm\"> Validatio