如何包含所有自定义帖子类型而不是仅包含帖子

时间:2010-09-07 17:02:30

标签: php wordpress wordpress-plugin custom-post-type

$this->add_meta_box( 'select_post_template', __( 'Post Template', 'custom-post-templates' ), 'select_post_template', 'post', 'side', 'default' );

为了使插件能够使用自定义帖子类型,我被告知要将“post”更改为自定义帖子类型的名称。有没有人知道我是否可以通过某种方式更改此行来使其与所有自定义帖子类型(包括常规帖子)一起使用?

仅供参考,我发现这个: http://wordpress.org/support/topic/custom-post-templates-with-custom-post-types-in-wp-30?replies=5#post-1679398

这是参考自定义帖子模板插件: http://wordpress.org/extend/plugins/custom-post-template/

提前致谢!

编辑:

我试过了:

$post_types = get_post_types(array("public" => true));
foreach ($post_types as $post_type) {
  $this->add_meta_box("select_post_template", __("Post Template", "custom-post-templates"), "select_post_template", $post_type, "side", "default");
}

但是自定义帖子类型仍然没有获得模板选择菜单。这些帖子就像他们使用原始代码一样。感谢您的建议......有没有人有另一个?

注意:从概念上讲,这种方法是可靠的。如果我使用自定义帖子类型列表创建自己的数组,则此代码会为其添加模板。

1 个答案:

答案 0 :(得分:1)

您可以遍历所有已注册的帖子类型并为每个帖子类型添加元框,但您可能需要过滤掉某些类型,因为附件也是帖子。

$post_types = get_post_types(array("public" => true));
foreach ($post_types as $post_type) {
  add_meta_box("select_post_template", __("Post Template", "custom-post-templates"), "select_post_template", $post_type, "side", "default");
}

关于自定义帖子模板插件,我认为问题是你的自定义帖子类型在初始化后注册(因为它不使用钩子)。因此,$post_types(上面)不包含您的类型,并且无法为它们添加元框。您可以尝试添加此hack(在custom-post-templates.php末尾):

add_action('init', 'hack_add_meta_boxes');
function hack_add_meta_boxes() {
  global $CustomPostTemplates;
  $post_types = get_post_types(array('public' => true));
  foreach ($post_types as $post_type) {
    $CustomPostTemplates->add_meta_box( 'select_post_template', __( 'Post Template', 'custom-post-templates' ), 'select_post_template', $post_type, 'side', 'default' );
  }
}