在 WooCommerce 中的简短描述之前显示自定义产品字段

Display a custom product field before short description in WooCommerce

在简短描述之前,我在 WooCommerce 中添加新字段时遇到问题。

我在 functions.php 中使用了脚本并且我的新自定义字段显示正确但是:

如何在不删除产品简短描述的情况下显示此自定义字段?
如何重置此自定义字段内容?

这是我的代码:

// Add a custom Field
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );

function woo_add_custom_general_fields() {

  global $woocommerce, $post;

    woocommerce_wp_text_input( 
        array( 
            'id'          => '_text_field', 
            'label'       => __( 'Termin dostawy', 'woocommerce' ), 
            'placeholder' => 'np: 7 dni',
            'desc_tip'    => 'true',
            'description' => __( 'Wpisz przewidywany termin dostawy, np: 7 dni.', 'woocommerce' ) 
        )
    );

}

// Save the custom field
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );
function woo_add_custom_general_fields_save( $post_id ){
    $woocommerce_text_field = $_POST['_text_field'];
    if( ! empty( $woocommerce_text_field ) )
        update_post_meta( $post_id, '_text_field', esc_attr( $woocommerce_text_field ) );

}

// Display the custom field
add_action('woocommerce_short_description', 'magik_custom_text', 10, 1);
function magik_custom_text()
{
     global $product;

     global $woocommerce, $post;
     echo "Termin dostawy: ".get_post_meta( $post->ID, '_text_field', true );
}

负责显示的函数:

add_action('woocommerce_short_description', 'magik_custom_text', 10, 1);
function magik_custom_text()
{

更新二:

1) 你应该将它添加到简短描述中而不是替换它......

正确的方法是在woocommerce_single_product_summary cation hook中hook你的自定义函数在简短描述之前(使用11到19之间的优先级):

add_action('woocommerce_single_product_summary', 'magik_custom_text', 18);
function magik_custom_text()
{
    global $post;
    $field_value = get_post_meta( $post->ID, '_text_field', true );
    // Displaying the custom field only when is set with a value
    if( ! empty( $field_value ) )
        echo '<p>' . __('Termin dostawy: ', 'woocommerce') . $field_value . '</p>';
}

代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。

已经过测试并且有效。所以你会得到这个:


2) 为了能够删除您的产品自定义字段的内容,您需要替换:

 if( ! empty( $woocommerce_text_field ) ) 

作者:

 if( isset( $woocommerce_text_field ) )

在这个钩子函数中:

add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );
function woo_add_custom_general_fields_save( $post_id ){
    $woocommerce_text_field = $_POST['_text_field'];
    if( isset( $woocommerce_text_field ) )
        update_post_meta( $post_id, '_text_field', esc_attr( $woocommerce_text_field ) );

}