我正在编写一个wordpress插件,并希望为所有类型的帖子添加meta_box('page','post','custom_post_type')。通过引用wordpress add_meta_box(),我发现它只接受单一类型的帖子。有人知道怎么做我想要的吗?感谢。
答案 0 :(得分:1)
foreach ( array( 'post', 'page', 'custom_whatever', 'whatever2' ) as $page )
add_meta_box( 'id', 'whatever', $callback, $page, $context, $priority, $callback_args );
请注意,现在$ page变成了一个数组,通过它可以获得所有帖子类型。
更新我
您可以使用get_post_types获取所有已注册的帖子类型,并使用它来填充上面的数组。
(注意:您可能需要过滤并从数组中获取附件。)
答案 1 :(得分:0)
这是一个完整的工作代码。
<?php
function my_meta_box() {
$my_post_types = get_post_types();
foreach ( $my_post_types as $my_post_type ) {
add_meta_box(
'Meta_box_ID', __( 'Title of the meta box', 'textdomain' ), 'callback_function', $my_post_type
);
}
}
function callback_function(){
// Your metabox code goes here :)
}
add_action( 'add_meta_boxes', 'my_meta_box' );
?>
参考:https://developer.wordpress.org/reference/functions/add_meta_box/
答案 2 :(得分:0)
为什么这么详细?
在每个请求上都会调用操作,并且$post
对象是全局对象,因此我们可以使用它:
function my_meta_box() {
global $post;
add_meta_box(
"box-id",
__("Title"), function () {},
$post->post_type,
"context");
}
add_action("add_meta_boxes", "my_add_meta_box");