如何将meta box添加到“未知”的自定义帖子中?

时间:2013-12-17 作者:Steven

我正在运行WP multi-site,我创建了一个插件,可以在我的页面和帖子中添加元框。

add_meta_box( \'Intro\', __(\'Intro\'), \'sewp_post_intro_meta_box\', \'post\', \'normal\', \'high\' );
add_meta_box( \'Intro\', __(\'Intro\'), \'sewp_post_intro_meta_box\', \'page\', \'normal\', \'high\' );
问题是,这不是为我的自定义帖子类型添加的。添加另一个add_meta_box 在我的插件中不是一个选项,因为它只与此客户相关。

有没有办法绕过这个问题?

2 个回复
最合适的回答,由SO网友:tfrommen 整理而成

我不知道你所说的“未知自定义帖子”是什么意思,但下面是如何将元框添加到许多帖子类型中的:

$post_types = array(
    \'post\',
    \'page\',
    \'my_custom_post_type\',
);
foreach ($post_types as $post_type)
    add_meta_box(\'Intro\', __(\'Intro\'), \'my_meta_box\', $post_type, \'normal\', \'high\');
如果您想拥有不同的上下文和/或优先级,您必须在多个调用中完成。

如果我误解了你,请开导我。

// Edit
当然,你可以用另一种方法来做,并排除你所做的文章类型not 想要这个元盒。

$args = array(
    \'public\' => true,
);
if (! is_array($post_types = get_post_types($args)))
    $post_types = array();

unset($post_types[\'post\']);
unset($post_types[\'attachment\']);
unset($post_types[\'my_custom_post_type\']);

if (count($post_types))
    foreach ($post_types as $post_type)
        add_meta_box(\'Intro\', __(\'Intro\'), \'my_meta_box\', $post_type, \'normal\', \'high\');
如果这不是你想要的,恐怕我不知道你会满意什么。

您不想指定帖子类型,但想将某些功能绑定到特定的帖子类型。。。

SO网友:birgire

你可以试试NULL 或空字符串作为$screen 输入值:

add_meta_box( \'Intro\', 
               __(\'Intro\'), 
              \'sewp_post_intro_meta_box\', 
              $screen = \'\', 
              \'normal\', 
              \'high\' 
            );
要将元框添加到任何“可筛选”的post类型,因为default 是:

 if ( empty( $screen ) )
     $screen = get_current_screen();
如果你需要一些特定的帖子类型或更好的控制,你应该使用@t f建议的方法。

结束

相关推荐