php Woocommerce自定义字段不会更新,当我离开他们空,仍然显示空字段

bpzcxfmw  于 2023-03-16  发布在  PHP
关注(0)|答案(3)|浏览(131)

我添加了一个自定义字段到一个单一的产品页面为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' ) 
    )
);
    echo '</div>';
}
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中,我把它显示在产品页面上,但是它仍然显示名称ISBN 10:如果它是空字段。

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

因此,两个问题是我不能编辑产品包含一个空的自定义字段。如果字段为空(只有当字段以前没有包含数据时才可能),它仍然显示字段名称。
先谢了。

xghobddn

xghobddn1#

您的保存函数应该如下所示

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']为空时不更新发布 meta

bq3bfh9z

bq3bfh9z2#

什么会:

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

返回?
我猜问题在于字段仍然包含一些值,即使它是空的。检查var_dump,然后调整if语句
我想声明应该是这样的:

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

mhd8tkvw3#

试试这个:

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

问候

相关问题