Php Woocommerce自定义字段赢得';当我将它们保留为空并且仍然显示空字段时,不会更新

Php Woocommerce自定义字段赢得';当我将它们保留为空并且仍然显示空字段时,不会更新,php,wordpress,woocommerce,custom-fields,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' ); // S

我在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 ) );
}
//显示字段
添加操作(“woocommerce\u product\u options\u general\u product\u data”、“woo\u add\u custom\u general\u fields”);
//保存字段
添加操作('woo商业\流程\产品\元','woo \添加\自定义\常规\字段\保存');
函数woo_添加_自定义_常规_字段(){
全球$woocmerce,$post;
回声';
//自定义字段将在此处创建。。。
//文本字段
woocommerce_wp_text_input(
数组(
'id'=>'\u ISBN\u字段',
'label'=>uuuu('ISBN','woocommerce'),
'占位符'=>'',
'desc_tip'=>'true',
“description'=>”(ISBN.,“woocommerce”)
)
);
函数woo\u添加\自定义\常规\字段\保存($post\u id){
//客户文本ISBN字段
$woocommerce_text_field=$_POST[“ISBN_field]”;
如果(!空($woocmerce\u text\u field))
更新发布元($post\u id,'ISBN\u字段',esc\u attr($woocommerce\u text\u字段));
}
然后在short-description.php中,我创建了它,以便它显示在产品页面上,但是它仍然显示名称ISBN10:if它是一个空字段

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

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

提前感谢。

什么是:

var_dump( get_post_meta( $post->ID, '_ISBN_field' , true) );
返回

我想问题在于,即使字段为空,它仍然包含一些值。。 检查var_转储,然后调整if语句

我猜这句话应该是这样的:

if ( get_post_meta( $post->ID, '_ISBN_field', true ) != '' ) {

您的save函数应该如下所示

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\u text\u field)
仅当
$\u POST['''u ISBN\u field']
具有某些值时才会返回true,因此如果
$\u POST[''u ISBN\u field']
为空,则不会更新POST meta

尝试以下操作:

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


关于

请针对您的问题发布一个新问题,并严格使用回复功能进行回复!抱歉,我编辑了我的答案并创建了另一个完美的问题,效果非常好。我想知道另一件事,是否可以将这些字段放在product-attributes.php上?目前此部分包含信息例如大小和重量。但如果它在任何时候都能包含这些信息,那就太棒了。或者
删除post\u meta($post\u id,'.\u ISBN\u field');
而不是
更新post\u meta($post\u id,'.\u ISBN\u field','')
,以防您不想在数据库中保留空字段