为所有类型的帖子添加wordpress元框

时间:2012-06-21 01:35:45

标签: wordpress wordpress-plugin

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

3 个答案:

答案 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");