嘿帮我最近为我网站的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>';
}
}
我的目标是在类别页面中显示新产品价格而不是旧产品价格。任何帮助将不胜感激!
提前致谢
答案 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文件中,新价格根据条件以编程方式显示在类别页面,商店和单个产品页面中。
我希望这有帮助,至少部分是这样。