Есть ли способ включить поле бэкэнда в панели управления WordPress, чтобы отображать пользовательскую цену для продукта на странице архива и для дополнительных / связанных продуктов, но оставить цену в сводке по продукту?
Пример: продукт А имеет цену 10 €, но я бы хотел показать «от 6 € / кг».
Самый простой способ - использовать настраиваемое поле, которое переопределяет woocommerce_template_loop_price
, но этот код не работает, но я не понимаю, почему.
add_action('woocommerce_template_loop_price', 'shopprice_change', 10, 2);
function shopprice_change ($price, $product) {
global $post, $blog_id;
$post_id = $post->ID;
$price = get_post_meta($post_id, 'shoppricechange', true);
return $price;
wp_reset_query();
}
UPDATE
Я нашел решение для изменения цены на странице архива без изменения на странице отдельного продукта:
function cw_change_product_html( $price_html, $product ) {
$unit_price = get_post_meta( $product->id, 'shoppricechange', true );
if (is_product()) return $price_html;
if ( ! empty( $unit_price ) ) {
$price_html = '<span class="amount">' . wc_price( $unit_price ) . '</span>';
}
return $price_html;
}
add_filter( 'woocommerce_get_price_html', 'cw_change_product_html', 10, 2 );
Проблема: На самом деле продажи и сопутствующие товары также должны измениться на странице одного продукта. Но с if (is_product()) return $price_html;
это исключает и их. Кто поможет решить эту проблему, получит награду. Спасибо!