上周我创建了第一个插件,可以自定义帖子类型。在这一过程中,我复制粘贴了我已有的代码,并将其修改为不同的帖子类型。然而,无论出于何种原因,我为add\\u meta\\u box设置的回调没有被调用。有谁能告诉我为什么会这样,我已经反复查看了一遍,但都没有什么好运气。
/**
* Adds a meta box to the post editing screen
/***************************************************************************/
function package_custom_meta()
{
add_meta_box( \'package_meta\', __( \'Package Title\', \'package_textdomain\' ), \'package_meta_callback\', \'package\' , \'high\' );
echo "package_custom_meta CALLED";
}
add_action( \'add_meta_boxes\', \'package_custom_meta\' );
/**
* Outputs the content of the meta box
/***************************************************************************/
function package_meta_callback( $post )
{
echo "package_meta_callback CALLED";
wp_nonce_field( basename( __FILE__ ), \'package_nonce\' );
$package_stored_meta = get_post_meta( $post->ID );
?>
<p>
<label for="meta-package-512mb" class="package-row-title"><?php _e( \'512MB RAM\', \'package_textdomain\' )?></label>
<input type="text" name="meta-package-512mb" id="meta-package-512mb" value="<?php if ( isset ( $package_stored_meta[\'meta-package-512mb\'] ) ) echo $package_stored_meta[\'meta-package-512mb\'][0]; ?>" />
</p>
<p>
<label for="meta-package-1gb" class="package-row-title"><?php _e( \'1GB RAM\', \'package_textdomain\' )?></label>
<input type="text" name="meta-package-1gb" id="meta-package-1gb" value="<?php if ( isset ( $package_stored_meta[\'meta-package-1gb\'] ) ) echo $package_stored_meta[\'meta-package-1gb\'][0]; ?>" />
</p>
<?php
}
最合适的回答,由SO网友:Matt Keys 整理而成
看起来我们都错过了这个错误,因为一开始我也没有看到。
在调用add\\u meta\\u框时,您跳过了上下文的参数,直接转到了优先级。“high”不是上下文参数的可用字符串,这显然会导致函数以静默方式失败。
为上下文添加字符串可以修复它:
add_meta_box( \'package_meta\', __( \'Package Title\', \'package_textdomain\' ), \'package_meta_callback\', \'package\', \'normal\', \'high\' );