Woo Commerce在产品类别页面中显示新价格字段

时间:2013-11-19 09:25:05

标签: wordpress woocommerce

嘿帮我最近为我网站的woocommerce部分创建了新的价格字段。新字段是rrp和成本价格。我创建的字段工作正常并显示在单个产品页面上,但它们不显示在产品类别页面上。旧的价格目前显示在类别上(这些需要由新的价格字段替换)

以下是我为添加新字段而创建的脚本

 // RRP
add_action( 'woocommerce_product_options_pricing', 'wc_rrp_product_field' );
function wc_rrp_product_field() {
    woocommerce_wp_text_input( array( 'id' => 'rrp_price', 'class' => 'wc_input_price short', 'label' => __( 'RRP', 'woocommerce' ) . ' (' . get_woocommerce_currency_symbol() . ')' ) );
}

add_action( 'save_post', 'wc_rrp_save_product' );
function wc_rrp_save_product( $product_id ) {
    // If this is a auto save do nothing, we only save when update button is clicked
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
        return;
    if ( isset( $_POST['rrp_price'] ) ) {
        if ( is_numeric( $_POST['rrp_price'] ) )
            update_post_meta( $product_id, 'rrp_price', $_POST['rrp_price'] );
    }
}
add_action( 'woocommerce_single_product_summary', 'wc_rrp_show', 5 );
function wc_rrp_show() {
    global $product;
    // Do not show this on variable products
    if ( $product->product_type <> 'variable' ) {
        $rrp = get_post_meta( $product->id, 'rrp_price', true );
        echo '<div class="woocommerce_msrp">';
        _e( 'RRP: ', 'woocommerce' );
        echo '<span class="woocommerce-rrp-price">' . woocommerce_price( $rrp ) . '</span>';
        echo '</div>';
    }
}

//New Price
add_action('woocommerce_product_options_pricing','custom_cost_price');
function custom_cost_price() {
  woocommerce_wp_text_input( array( 'id' => '_cost_price', 'class' => 'wc_input_price short', 'label' => __( 'Cost Price', 'woocommerce' ) .    ' ('.get_woocommerce_currency_symbol().')', 'type' => 'number', 'custom_attributes' => array(
                    'step'  => 'any',
                    'min'   => '0'
                ) ) );
}

add_action('woocommerce_process_product_meta_simple', 'save_custom_cost_price');
function save_custom_cost_price($post_id) {
    global $wpdb, $woocommerce, $woocommerce_errors;
    update_post_meta( $post_id, '_cost_price', stripslashes( $_POST['_cost_price'] ) );
}

add_action( 'woocommerce_single_product_summary', 'custom_cost_show', 5 );
function custom_cost_show() {
    global $product;
    // Do not show this on variable products
    if ( $product->product_type <> 'variable' ) {
        $rrp = get_post_meta( $product->id, '_cost_price', true );
        echo '<div class="woocommerce_msrp">';
        _e( 'Custom Price: ', 'woocommerce' );
        echo '<span class="woocommerce-cost-price">' . woocommerce_price( $rrp ) . '</span>';
        echo '</div>';
    }
}

我的目标是在类别页面中显示新产品价格而不是旧产品价格。任何帮助将不胜感激!

提前致谢

1 个答案:

答案 0 :(得分:0)

设置自定义价格后,您可以在前端显示新价格,例如这样的代码,例如,显示仅用于登录用户的价格:

 if(is_user_logged_in()){

        return get_post_meta (get_the_ID(),'_cost_price',true);

 } else {

        return get_post_meta (get_the_ID(),'_regular_price',true);
 }

无论如何,对我而言,这种代码适用于任何有条件的,但是,这是一个很大的但是,购物车不会在我正在使用的商店中采取价格,并显示所有产品的价格为0.00美元

以下是我用来在商店中显示自定义价格的代码:

add_filter('woocommerce_get_sale_price', 'my_custom_price',99);
add_filter('woocommerce_get_regular_price','my_custom_price',99);
add_filter('woocommerce_get_price', 'my_custom_price',99);


function my_custom_price( $original_price ) {

    global $post, $woocommerce;

    if (is_user_logged_in() && get_post_meta(get_the_ID(),wp_get_current_user()->display_name,TRUE) == get_post_meta(get_the_ID(),'admin',TRUE)){/*COnditional to check if the user is logged in and if a checkbox with his/her name is selected.*/ 

        return get_post_meta (get_the_ID(),'_cost_price',true);  //Get the custom price and return it to the filter. 

     } else {

        return get_post_meta( get_the_ID(), '_regular_price', true); //get regular price and return it to the filter
 }

}

所有代码都在functions.php文件中,新价格根据条件以编程方式显示在类别页面,商店和单个产品页面中。

我希望这有帮助,至少部分是这样。