php - 当我将它们留空时,Woocommerce 自定义字段不会更新,并且仍然显示空字段

标签 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' ) 
    )
);
    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中我做了它,以便它显示在产品页面上。但是,如果它是空字段,它仍然显示名称 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);
}
?>

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

提前致谢。

最佳答案

你的保存函数应该是这样的

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'] 为空

关于php - 当我将它们留空时,Woocommerce 自定义字段不会更新,并且仍然显示空字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24720977/

相关文章:

php - Laravel 身份验证在 Laravel 5.3 中无法正常工作

html - Bootstrap 3 - 列表组元素问题 : excess p tags

php - 在后端产品选项卡中检索自定义字段的标签名称

php - 将类别描述移至 Wordpress 页面底部

php - 有没有办法在没有插件的情况下在结帐完成前上传图片?

PHP $_SERVER ['REMOTE_ADDR' ] 有时解析为空字符串

php - 使用 PHP 从 MySQL 数据库中获取数据,以表格形式显示以供编辑

mysql - 如何将相同的列值分组并映射到具有相应帖子值的新列

php - 获取与 Woocommerce 中的产品类别相关的所有属性及其术语

PHP 根据参数是否在数据库中编写条件语句