我试图编写我的第一个插件,但在add\\u meta\\u box()中遇到了回调问题。meta框出现在自定义帖子类型页面上,但里面没有内容。
以下是相关代码:
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
}
}
最合适的回答,由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\' ) );