我正在编写一个 wordpress 插件,并想为所有类型的帖子('page'、'post'、'custom_post_type')添加一个 meta_box。通过引用 wordpress add_meta_box()我发现它只接受单一类型的帖子。有人知道如何做我想做的事吗?谢谢。
问问题
2494 次
3 回答
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获取所有已注册的帖子类型,并使用它来填充上述数组。
(注意:您可能需要过滤并从数组中获取附件..)
于 2012-06-21T02:31:48.593 回答
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/
于 2017-12-26T12:06:54.643 回答
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");
于 2018-11-05T08:38:12.070 回答