我为woocommerce的单个产品页面添加了一个自定义字段,以显示我销售的图书的ISBN号。我找到了一个很好的指南,并设法按我的意愿添加一切。但是,当我清空ISBN的自定义字段时,它不会在网站上显示为空。
我在functions.php中有以下代码
// Display Fields
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );
// Save Fields
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );
function woo_add_custom_general_fields() {
global $woocommerce, $post;
echo '<div class="options_group">';
// Custom fields will be created here...
// Text Field
woocommerce_wp_text_input(
array(
'id' => '_ISBN_field',
'label' => __( 'ISBN', 'woocommerce' ),
'placeholder' => '',
'desc_tip' => 'true',
'description' => __( 'ISBN.', 'woocommerce' )
)
);
function woo_add_custom_general_fields_save( $post_id ){
// Customer text ISBN Field
$woocommerce_text_field = $_POST['_ISBN_field'];
if( !empty( $woocommerce_text_field ) )
update_post_meta( $post_id, '_ISBN_field', esc_attr( $woocommerce_text_field ) );
}
然后在short-description.php中我做了它,以便在产品页面上显示。但是它仍然显示名称ISBN10:如果它是一个空字段。
<?php
// Display Custom Field Value
if (!((get_post_meta($post->ID, '_ISBN_field', true))==”)) {
//Not empty
echo '<b>ISBN10: </b>',get_post_meta( $post->ID, '_ISBN_field' , true);
}
?>
所以这两个问题是我无法编辑产品以包含空的自定义字段。如果该字段为空(仅当字段之前未包含数据时才可用),它仍会显示字段名称。
提前致谢。
答案 0 :(得分:1)
您的保存功能应该是
function woo_add_custom_general_fields_save( $post_id ){
// Customer text ISBN Field
$woocommerce_text_field = $_POST['_ISBN_field'];
if( !empty( $woocommerce_text_field ) )
update_post_meta( $post_id, '_ISBN_field', esc_attr( $woocommerce_text_field ) );
else
update_post_meta( $post_id, '_ISBN_field', '' );
}
如果!empty( $woocommerce_text_field )
仅在$_POST['_ISBN_field']
具有某个值时返回true,那么如果$_POST['_ISBN_field']
为空,则不会更新帖子元
答案 1 :(得分:0)
做什么:
var_dump( get_post_meta( $post->ID, '_ISBN_field' , true) );
返回?
我想问题是该字段仍然包含一些值,即使它是空的.. 检查var_dump并调整你的if语句
我想这句话应该是:
if ( get_post_meta( $post->ID, '_ISBN_field', true ) != '' ) {
答案 2 :(得分:0)
试试这个:
<?php
// Display Custom Field Value
$ISBN_field = get_post_meta($post->ID, '_ISBN_field', true);
if( !empty( $ISBN_field ) ){
echo '<b>ISBN10: </b>'.$ISBN_field;
} ?>
此致