我最近为我的一个项目开发了两个独立的wordpress插件
这两个插件都创建自定义post类型fsb_partners和fsb_resource_library。在这两个插件中,我创建了不同的metabox (包含一个文件字段,即Logo和资源库插件创建了带有两个文件字段的metabox,即Audio和PDF)。
我使用以下代码在每个插件中创建metabox:
add_filter( 'cmb_meta_boxes', array($this, "fsb_partners_metaboxes"), 999); ->合作伙伴插件
add_filter( 'cmb_meta_boxes', array($this, "fsb_resource_library_metaboxes"), 999); ->资源库插件
现在只有资源库插件中的metabox是可见的,而其他插件则是不可见的。如果我将partner的优先级更改为9999,那么它就会出现,但同时资源库插件也会中断。
我知道这是wordpress的add_filter钩子的优先问题,但我无法掌握它。有什么帮助吗?
发布于 2015-11-12 06:10:42
我自己修的。刚刚在我的主题的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;
});https://stackoverflow.com/questions/33644666
复制相似问题