Metabox在自定义帖子类型中不显示

时间:2012-10-30 作者:Eri Mehmeti

我正在尝试在自定义帖子类型中创建一个metabox输入字段,即使我尽可能按照说明操作,它也无法工作。我不是一个PHP开发人员,所以我想这可能只是一个小东西,它丢失了,或者它是错误的。

我的意思是,我根本不在WP UI中显示。

代码如下:

<?php

function add_post_type($name, $args = array()) {
    add_action(\'init\', function() use($name, $args) {

            $upper = ucwords($name);
            $name = strtolower(str_replace(\' \',\'_\',$name));

            $args = array_merge(

            array(
            \'public\'=> true,
            \'label\' => "All $upper" . \'s\',
            \'labels\' => array(\'add_new_item\' => "Add New $upper"),
            \'support\' => array(\'title\', \'editor\', \'author\', \'thumbnail\', \'excerpt\', \'comments\', \'custom-fields\'),
            \'taxonomies\' => array(\'post_tag\',\'category\')
            ),

            $args

            );

            register_post_type(\'$name\', $args);
        });

}


//now we create and register a taxonomy
function add_taxonomy($name, $post_type, $args = array()) {
    $name = strtolower($name);

    add_action(\'init\', function() use($name, $post_type, $args) {
            $args = array_merge(
                array(
                \'label\' => ucwords($name),

                ),
                $args
            );
                register_taxonomy($name, $post_type, $args);
    }); 
}

/************************************************************
  Now we add the names of the custom post type and taxonomies
*************************************************************/


add_post_type(\'snippet\', array(
            \'supports\' => array(\'title\', \'editor\', \'author\', \'thumbnail\', \'excerpt\', \'comments\', \'custom-fields\'),
            \'taxonomies\' => array(\'post_tag\')
));


add_taxonomy(\'language\', \'snippet\');

/************************************************************
  Creating Metaboxes
*************************************************************/

add_action(\'add_meta_boxes\', function() {
    add_meta_box(
        \'er_snippet_info\',
        \'Snippet Info\',
        \'er_snippet_info_cb\',
        \'snippet\',
        \'normal\',
        \'high\'
    );
});

function er_snippet_info_cb() {
    global $post;
    $url = get_post_custom($post->ID); 

    ?>

    <label for="er_associated_url">Associated URL: </label>
    <input type="text" name="er_associated_url" id="er_associated_url" value="<?php echo $url; ?>" />

    <?php
}
    add_action(\'save_post\', function () {
        global $post; 
        if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE ) return;
        //security check 
        if ($_POST && !wp_verify_nonce($_POST[\'er_nonce\'], _FILE_)) {
                if ( isset ($_POST[\'er_associated_url\']) ) {
            update_post_meta($post->ID, \'er_associated_url\', $_POST[\'er_associated_url\']);  
            }
       }

    });
?>
另一个问题是,即使函数存在,标记也没有命名。

4 个回复
SO网友:cybmeta

自定义帖子类型正在注册为name, 不snippet 正在呼叫中add_meta_boxes 行动这是因为PHP变量是在单引号内传递的,不会被解释。

更改此项:

register_post_type(\'$name\', $args);
收件人:

register_post_type($name, $args);
这也适用于:

register_post_type("$name", $args);
但是,如果希望对PHP变量进行解释,请不要在单引号中传递它们。

此外,建议使用add_action(\'add_meta_boxes_{post-type}\', \'callback\') 为其他立柱类型创建较少不必要的挂钩(从codex).

SO网友:truemedia

在代码中,您试图通过functions as parameters 在add\\u action()中。这种语法在javascript中有效,但在php中效果不太好。尝试在add\\u action()中传递函数名

SO网友:user3020844

这可能会有所帮助。这对我有用

function my_plugin_add_meta_box()
{
    $type_name = array(\'custom_post_type_name\');
    foreach ( $type_name as $custom_post_type ) {
            add_meta_box(\'my_plugin_meta_box_id\', __(\'Meta Box Name\'), \'my_plugin_meta_box_callback\', $custom_post_type);
    }
}
add_action( \'add_meta_boxes\', \'my_plugin_add_meta_box\' );
然后可以在my_plugin_meta_box_callback 作用希望这能帮助一些人。

SO网友:Balas

默认情况下,自定义帖子类型将没有元盒。

您可以添加插件,如高级自定义字段

或者您可以编写一个代码,将元框添加到您的自定义帖子类型中。

清除参考站点:

https://thomasgriffin.io/how-to-automatically-add-meta-boxes-to-custom-post-types/

// 查看此链接

add\\u meta\\u box(\'meta\\u id\',\'My Custom meta box\',\'tgm\\u Custom\\u meta\\u box\\u callback\',$post\\u type\',\'normal\',\'high\');

结束

相关推荐

Metabox中的Plupload-AJAX操作在类中不起作用

我正试图将WP Pluploader放入我帖子页面的元框中-根据Plupload Intergration in a meta-box? 和http://www.krishnakantsharma.com/2012/01/image-uploads-on-wordpress-admin-screens-using-jquery-and-new-plupload/我在第二个链接中的示例中实现了这一切。然而,我想把它全部放在一个类文件中。如果我把它全部打包成一个类,它就会停止工作。这都是因为:function