Wordpress Add_filter 2 个不同的自定义插件 (Metaboxes) 的优先级问题

Wordpress Add_filter Priority Issue On 2 Different Custom Plugins (Metaboxes)

我最近为我的一个项目开发了 2 个独立的 wordpress 插件

  1. 合作伙伴
  2. 资源库

两个插件都创建自定义 post 类型 fsb_partnersfsb_resource_library。在这两个插件中,我创建了不同的元数据框(合作伙伴插件元数据框包含一个文件字段,即徽标和资源库插件创建具有两个文件字段的元数据框,即音频和 PDF)。

我使用以下代码在每个插件中创建元数据框:

add_filter( 'cmb_meta_boxes', array($this, "fsb_partners_metaboxes"), 999); ---> 合作伙伴插件

add_filter( 'cmb_meta_boxes', array($this, "fsb_resource_library_metaboxes"), 999); ---> 资源库插件

现在只有资源库插件的metabox可见,其他不可见。如果我将合作伙伴插件 metabox 的优先级更改为 9999 然后它会显示,但同时资源库插件会关闭。

我知道这是 wordpress 的 add_filter 钩子的优先级问题,但我无法得到它。有帮助吗?

我自己修好了。刚刚在我的主题 functions.php 中创建了一个单独的(通用)函数,如下所示:

add_filter('cmb_meta_boxes', function( array $metaboxes = array() ) {

    global $fsb_resource_library, $fsb_partner;

    if( class_exists('fsb_resource_library') && is_object($fsb_resource_library) ) {
        $metaboxes += $fsb_resource_library->fsb_resource_library_metaboxes();  
    }

    if( class_exists('fsb_partners') && is_object($fsb_partner) ) {
        $metaboxes += $fsb_partner->fsb_partners_metaboxes();   
    }

    return $metaboxes;

});