You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress media library自定义弹窗如何实现metadata过滤

WordPress自定义媒体弹窗单实例添加Metadata过滤实现方法

你可以直接通过当前媒体弹窗实例的查询钩子追加meta过滤规则,所有逻辑仅作用于当前弹窗,不会修改全局媒体库的默认行为,原有MIME类型过滤逻辑可完全保留。

实现要点

  • 初始化wp.media实例时,可直接在library配置项中传入meta_query参数,和原生WP_Query的meta查询语法完全一致,后端媒体接口原生支持该参数,无需额外开发后端兼容
  • 若需要动态调整过滤规则(比如弹窗内添加筛选控件),可监听当前实例的查询事件动态修改查询参数,事件绑定随实例销毁自动解绑,无全局污染
  • MIME类型过滤和meta过滤为叠加生效关系,符合多维度筛选需求

完整修改后代码

function upload_image_tinymce(e) {
    e.preventDefault();
    var $input_field = $('.mce-my_input_image');
    var custom_uploader = wp.media.frames.file_frame = wp.media({
        title: 'Add Video',
        button: {
            text: 'Add Video'
        },
        library: {
            // 原有MIME类型过滤保留
            type: [
                'video/MP4',
                'video/quicktime',
                'video/x-m4v',
            ],
            // 新增默认meta过滤规则,按实际业务需求修改键、值、比较符
            meta_query: [
                {
                    key: 'your_custom_metadata_key', // 替换为你要过滤的meta键名
                    value: 'target_value', // 替换为要匹配的meta值
                    compare: '=' // 支持=、!=、>、<、LIKE等WP_Query支持的比较运算符
                }
            ]
        },
        multiple: false
    });

    // 若需要动态修改过滤规则(比如弹窗内加筛选下拉、输入框),可绑定该事件
    custom_uploader.on('library:query:attachments', function(queryInstance) {
        // 示例:监听自定义筛选控件值变化后,动态更新meta_query即可实时刷新列表
        // queryInstance.set('meta_query', [/* 新的查询规则数组 */])
    });

    // 原有select逻辑不变
    custom_uploader.on('select', function() {
        var attachment = custom_uploader.state().get('selection').first().toJSON();
        $input_field.val(attachment.id);
    });
    custom_uploader.open();
}

扩展:添加弹窗内可视化筛选控件

如果需要在弹窗顶部工具栏添加metadata筛选的交互控件,可以在实例上监听open事件,往弹窗工具栏插入自定义DOM,控件值变化时更新library的查询属性即可实时刷新附件列表,所有DOM和事件都挂载在当前弹窗节点下,关闭弹窗后自动清理。

注意:不要修改wp.media.view.AttachmentFilters的全局原型,否则所有媒体弹窗都会出现你加的筛选控件,所有自定义逻辑都要绑定在当前custom_uploader实例对应的视图上。


内容的提问来源于stack exchange,提问作者Mohammad Zarei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 07:15:33