Woocommerce自定义字段在我将其留空并且仍显示空字段时不会更新

时间:2014-07-13 08:48:09

标签: php wordpress woocommerce custom-fields

我为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);
}
?>

所以这两个问题是我无法编辑产品以包含空的自定义字段。如果该字段为空(仅当字段之前未包含数据时才可用),它仍会显示字段名称。

提前致谢。

3 个答案:

答案 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;
} ?>

此致