Wordpress 在“添加元数据”框中创建的自定义字段会在默认自定义元数据框中再次出现
我成功地创建了一个包含自定义字段的元框,并将其限制为显示在自定义帖子类型中Wordpress 在“添加元数据”框中创建的自定义字段会在默认自定义元数据框中再次出现,wordpress,wordpress-theming,custom-fields,meta-boxes,child-theming,Wordpress,Wordpress Theming,Custom Fields,Meta Boxes,Child Theming,我成功地创建了一个包含自定义字段的元框,并将其限制为显示在自定义帖子类型中 //define metabox function product_info_en() { add_meta_box( 'english_info', 'English Info', 'english_product_name_callback', array('product'), 'normal', 'high' ); } //add to hook add_action( 'add_meta_boxes'
//define metabox
function product_info_en() {
add_meta_box( 'english_info', 'English Info', 'english_product_name_callback', array('product'), 'normal', 'high' );
}
//add to hook
add_action( 'add_meta_boxes', 'product_info_en' );
要在产品页面中显示的代码:
// display in add product admin page
function english_product_name_callback( $post ) {
//ob_start();
$content = esc_attr( get_post_meta( get_the_ID(), 'product_desc_en', true ) );
//here goes the custom field
echo '<fieldset><div><label><b>English Product Name:</b></label><br/>';
echo '<input id="product_name_en" type="text" name="product_name_en" style="width:100%; margin:10px 0px"';
echo ' value="';
echo esc_attr( get_post_meta( get_the_ID(), 'product_desc_en', true ) );
echo '"></div></fieldset>';
//here goes the wp_editor
echo '<fieldset><div><label><b>English Product Content Info:</b></label><div><br/>';
echo '<div>';
wp_editor($content, 'product_desc_en', array(
'wpautop' => true,
'media_buttons' => true,
'textarea_rows' => 10
)
);
echo '</div></fieldset>';
}
但是,应该只进入新创建的元盒的自定义创建字段将始终显示在默认的“自定义字段”中。所有的帖子类型都会发生这种情况。
如下图所示,这里可能存在什么问题
若要在默认框中隐藏和不显示自定义字段,请在自定义字段前加下划线
,这样产品描述
将变为\u产品描述
我的意思是,自定义字段的名称应以下划线作为前缀,WordPress默认自定义元数据库将忽略这些字段,并且不会显示在WordPress默认GUI中,但您可以通过使用新的下划线前缀名称进行调用,在您自己的自定义元数据库中使用和显示它们 若要在默认框中隐藏和不显示自定义字段,请在自定义字段前加下划线
,这样产品描述
将变为\u产品描述
我的意思是,自定义字段的名称应以下划线作为前缀,WordPress默认自定义元数据库将忽略这些字段,并且不会显示在WordPress默认GUI中,但您可以通过使用新的下划线前缀名称进行调用,在您自己的自定义元数据库中使用和显示它们 是它的默认值是它的默认值
//save
function enginfo_save_meta_box( $post_id ) {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
if ( $parent_id = wp_is_post_revision( $post_id ) ) {
$post_id = $parent_id;
}
$fields = [
'product_name_en',
];
foreach ( $fields as $field ) {
if ( array_key_exists( $field, $_POST ) ) {
update_post_meta( $post_id, $field, sanitize_text_field( $_POST[$field] ) );
}
}
update_post_meta( $post_id,'product_desc_en', wp_kses_post( $_POST['product_desc_en'] ) );
}
add_action( 'save_post', 'enginfo_save_meta_box' );