自定义元框不返回任何HTML

时间:2019-09-27 作者:Isaac

我试图编写我的第一个插件,但在add\\u meta\\u box()中遇到了回调问题。meta框出现在自定义帖子类型页面上,但里面没有内容。

No html returned from callback

以下是相关代码:

class MySkills
{
    function __construct()
    {
        add_action(\'init\', array(\'MySkills\', \'ip_myskills_register_post_type\'));
        add_action(\'load-post.php\', array($this, \'init_metabox\'));
        add_action(\'load-post-new.php\', array($this, \'init_metabox\'));
    }

    public function init_metabox() {
        add_action(\'add_meta_boxes\', array(\'MySkills\', \'skillsmetabox_init\'));
        add_action(\'save_post\', array($this, \'save_metabox_details\'));
    }

    public function skillsmetabox_init() {
        add_meta_box(\'myskills_meta\', \'Proficiency\', \'myskills_html\');
    }

    public function myskills_html($post) {
        ?>
        <?php wp_nonce_field( basename(__FILE__ ), \'ipmyskills_nonce\' ) ?>
        <label for="ipmyskills_input"><?php _e(\'Enter the proficiency level for this skill (1 to 100)\', \'myskill\') ?></label>
        <input type="text" class="widefat" name="ipmysills_input" id="ipmyskills_input" value="<?php echo esc_attr( get_post_meta($post->ID, \'ip_myskills_input\', true) ) ?>" />
        <?php
    }


}

1 个回复
最合适的回答,由SO网友:3gth 整理而成

尝试添加array( $this, \'myskills_html\' ) 到第三个参数。

    public function skillsmetabox_init() {
        add_meta_box( \'myskills_meta\', \'Proficiency\', array( $this, \'myskills_html\' ) );
    }
因为这是类方法,所以它应该具有$this

就像你对待

add_action( \'save_post\', array( $this, \'save_metabox_details\' ) );