0

我正在编写一个 wordpress 插件,并想为所有类型的帖子('page'、'post'、'custom_post_type')添加一个 meta_box。通过引用 wordpress add_meta_box()我发现它只接受单一类型的帖子。有人知道如何做我想做的事吗?谢谢。

4

3 回答 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 回答