我成功创建了一个内部带有自定义字段的metabox, 并限制它显示在自定义帖子类型中。
//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' );
【在add_meta_boxes中创建的自定义字段再次出现在默认的自定义Metabox中】在产品页面中显示它的代码:
// 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>
';
}
这是执行保存工作的代码:
//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' );
但是, 应该只进入新创建的元框的自定义创建的字段将始终显示在默认的” 自定义字段” 中。这适用于所有帖子类型。如下所示, 这里可能是什么问题?
文章图片
#1 要在默认框中隐藏而不显示你的自定义字段, 请在你的自定义字段前面加上下划线_, 这样product_desc_en将变为_product_des_en
我的意思是你的自定义字段的名称应带有下划线作为前缀, 而WordPress默认自定义metabox将忽略它们, 并且不会在WordPress默认GUI中显示, 但是你可以通过在其中使用新的Underscore前缀名称进行调用, 在自己的自定义metabox中使用和显示它们。
推荐阅读
- 自定义导航栏深度级别始终评估为零
- netty系列之:自建客户端和HTTP服务器交互
- 百分点大数据技术团队(BI嵌入式分析实践)
- 用FRP做内网穿透使用远程桌面连接家里的windows电脑
- Linux之lastb命令
- 龙蜥社区开发者自述(我是如何趣味玩转Anolis OS的(|征文活动))
- nginxssl加密
- 7文本处理和加密安全
- E: Unable to locate package sysv-rc-conf