Я использую woocommerce product addons plugin, где я хотел бы отображать цену продукта в моем раскрывающемся разделе аддонов. В настоящее время у меня есть код
<?php $loop = 0; $current_value = isset( $_POST['addon-' . sanitize_title( $addon['field-name'] ) ] ) ? wc_clean( $_POST[ 'addon-' . sanitize_title( $addon['field-name'] ) ] ) : ''; global $product; ?> <p class="form-row form-row-wide addon-wrap-<?php echo sanitize_title( $addon['field-name'] ); ?>"> <select class="addon addon-select" name="addon-<?php echo sanitize_title( $addon['field-name'] ); ?>"> <?php if ( ! isset( $addon['required'] ) ) : ?> <option value=""><?php _e('None', 'woocommerce-product-addons'); ?></option> <?php else : ?> <!--<option value=""><?php _e('Select an option...', 'woocommerce-product-addons'); ?></option>--> <?php endif; ?> <?php foreach ( $addon['options'] as $i => $option ) : $loop ++; $price = apply_filters( 'woocommerce_product_addons_option_price', $option['price'] > 0 ? ' + ' . wc_price( get_product_addon_price_for_display( $option['price'] ) ) . '' : '', $option, $i, 'select' ); ?> <option data-raw-price="<?php echo esc_attr( $option['price'] ); ?>" data-price="<?php echo get_product_addon_price_for_display( $option['price'] ); ?>" value="<?php echo sanitize_title( $option['label'] ) . '-' . $loop; ?>" <?php selected( $current_value, sanitize_title( $option['label'] ) . '-' . $loop ); ?>><?php echo wptexturize( $option['label'] . ' (' ); echo balanceTags($product->get_price_html()) . $price ?>)</option> <?php endforeach; ?> </select> </p>
Я использую это эхо
$product->get_price_html()
то, что это делает, хотя отображает цену «продажной цены» $ «цена», но я просто хочу отобразить только цену продажи или только цену продукта, если нет цены продажи. Посмотрев на код ниже, как бы это сделать?
Довольно просто. Мы напишем пользовательскую функцию, которая вначале будет уверена в этом, если продукт продается или нет. Затем он вернет регулярную или продажную цену, основанную на условии продажи, которое было определено ранее. Таким образом, функция будет –
/** * Returns product price based on sales. * * @return string */ function the_dramatist_price_show() { global $product; if( $product->is_on_sale() ) { return $product->get_sale_price(); } return $product->get_regular_price(); }
Теперь вызовите эту функцию the_dramatist_price_show()
вместо $product->get_price_html()
. Вы получите цену, основанную на продаже, или нет без символа валюты.
Надеюсь, это поможет.
Эта статья работала для меня. вы также можете попробовать это.
Если вы хотите получить обычную цену или цену продажи продукта woocommerce, и вы ничего не получаете, вам нужно знать следующее:
Если у продукта нет вариантов, вы можете получить обычную цену и цену продажи именно так:
Получить цену простого прокута
<?php #the product must be instantiated above like $product = new WC_Product(); echo $product->regular_price; echo $product->sale_price; ?>
Если у продукта есть варианты, вы ничего не получите, если будете использовать приведенный выше код.
Вам нужно получить цены на вариации.
Получите цену продукта с вариациями
#1 Get product variations $product_variations = $product->get_available_variations(); #2 Get one variation id of a product $variation_product_id = $product_variations [0]['variation_id']; #3 Create the product object $variation_product = new WC_Product_Variation( $variation_product_id ); #4 Use the variation product object to get the variation prices echo $variation_product ->regular_price; echo $variation_product ->sale_price;
Это все.
Наслаждаться.
Источник: http://www.w3bdeveloper.com/how-to/how-to-get-regular-price-of-a-product-in-wordpress-woocommerce/