WooCommerce循环上定义的产品自定义字段值替换价格

时间:2020-07-29 13:42:51

标签: php wordpress woocommerce custom-fields price

在我的WooCommerce产品上,我想用产品型号参考自定义字段(例如:#AB2568B)代替产品价格。如何显示模型参考而不是价格?请帮忙。

link

enter image description here

1 个答案:

答案 0 :(得分:1)

由于您没有在产品自定义字段中提供任何详细信息,因此下面的代码将为管理单个产品设置添加自定义字段。

然后,当此自定义字段具有定义的值时,它将替换产品价格:

// Admin product general settings: Display a custom field (below prices)
add_action( 'woocommerce_product_options_pricing', 'add_product_general_setting_field' );
function add_product_general_setting_field() {
    echo '<div class="options_group">';

    woocommerce_wp_text_input( array(
        'id'                => '_reference_id',
        'label'             => __( 'Reference Id', 'woocommerce' ),
        'placeholder'       => __( 'Please enter the model reference Id', 'woocommerce' ),
        'description'       => __( 'Please enter the model reference Id', 'woocommerce' ),
    ) );

    echo '</div>';
}

// Admin product general settings: Save custom field
add_action( 'woocommerce_admin_process_product_object', 'save_product_general_setting_field' );
function save_product_general_setting_field( $product ){
    if(isset($_POST['_reference_id']) ) {
        $product->update_meta_data( '_reference_id', sanitize_texT_field( $_POST['_reference_id']) );
    }
}

// replace loop product price by the model reference Id
add_action( 'woocommerce_after_shop_loop_item_title', 'action_after_shop_loop_item_title_callback', 9 );
function action_after_shop_loop_item_title_callback() {
    global $product;

    $reference_id = $product->get_meta('_reference_id');

    if( ! empty($reference_id) ) {
        remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 ); // remove the price

        // Display the model reference
        echo '<span class="price regerence_id">'.$reference_id.'</span>';
    }
}

代码进入活动子主题(或活动主题)的functions.php文件中。经过测试,可以正常工作。

enter image description here

enter image description here