Intereting Posts
shortcode – мне нужно отправить сообщение или загрузить другую страницу Добавлять только пользовательские классы в пункты меню навигации возможность пользовательской роли пользователя для пользовательской страницы Скрыть ACF от исходного кода до тех пор, пока не будет нажата кнопка «показать» Добавить загрузчик изображений на странице сообщений backend Следующие 10 сообщений данных просматриваемого в настоящее время в блоге страницы Навигация по тегам внутри настраиваемого типа сообщения как отлаживать модуль доставки / класс Почему мой автономный сайт разработки и онлайн-сайт ведут себя по-другому? WPDB поставляет неправильные результаты из сложных запросов WordPress собственный карусель, показывающий 10 предметов, но в общей сложности 17 предметов Как я могу применить no-disposable при программном добавлении пользователя с помощью wp_insert_user ()? Добавление «перенаправления» на кнопку WordPress implode & wp_insert_post вопрос Пользовательская таксономия не отображает все сообщения

Текст цены Woocommerce

Я пытаюсь показать цену моего продукта, будь то цена на человека или «на группу».

Я создал настраиваемое поле для обоих, так, например, если галочка настраивается в поле «price_per_person», цена будет отображаться как 100 долларов США на человека или если будет отмечено специальное поле «price_per_person», цена будет отображаться как 100 долларов США за группу

Я начал с фильтра ниже, но все запросы, которые я сделал, чтобы определить, выбрано ли настраиваемое поле, не работали.

add_filter( 'woocommerce_get_price_html', 'custom_price_html', 100, 2 ); function custom_price_html( $price, $product ){ $price = $price . ' per person'; return apply_filters( 'woocommerce_get_price', $price ); } 

Благодаря!

Обновление с выходом

 Array ( [_edit_last] => Array ( [0] => 1 ) [_edit_lock] => Array ( [0] => 1428754721:1 ) [_visibility] => Array ( [0] => visible ) [_stock_status] => Array ( [0] => instock ) [total_sales] => Array ( [0] => 0 ) [_downloadable] => Array ( [0] => no ) [_virtual] => Array ( [0] => no ) [_regular_price] => Array ( [0] => 79 ) [_sale_price] => Array ( [0] => ) [_purchase_note] => Array ( [0] => ) [_featured] => Array ( [0] => no ) [_weight] => Array ( [0] => ) [_length] => Array ( [0] => ) [_width] => Array ( [0] => ) [_height] => Array ( [0] => ) [_sku] => Array ( [0] => ) [_product_attributes] => Array ( [0] => a:0:{} ) [_sale_price_dates_from] => Array ( [0] => ) [_sale_price_dates_to] => Array ( [0] => ) [_price] => Array ( [0] => 79 ) [_sold_individually] => Array ( [0] => ) [_manage_stock] => Array ( [0] => no ) [_backorders] => Array ( [0] => no ) [_stock] => Array ( [0] => ) [_upsell_ids] => Array ( [0] => a:0:{} ) [_crosssell_ids] => Array ( [0] => a:0:{} ) [_product_image_gallery] => Array ( [0] => ) [slide_template] => Array ( [0] => ) [_thumbnail_id] => Array ( [0] => 63 ) [_wpb_vc_js_status] => Array ( [0] => false ) [_wpb_vc_js_interface_version] => Array ( [0] => 0 ) [price_per_person] => Array ( [0] => 1 ) [_price_per_person] => Array ( [0] => field_5528e5f80bad0 ) [price_per_group] => Array ( [0] => 0 ) [_price_per_group] => Array ( [0] => field_5528e6580bad1 ) ) 

Просто используйте параметр $product для получения значения настраиваемого поля и определите, что вернуть:

 function custom_price_html( $price, $product ) { if ( ( int ) get_post_meta( $product->id, 'price_per_person', true ) ) $price .= ' per person'; elseif ( ( int ) get_post_meta( $product->id, 'price_per_group', true ) ) $price .= ' per group'; $price .= '[filtered]'; // For debugging - if you don't see this next to your prices, the filter isn't even running, hence why it's not working! return $price; } add_filter( 'woocommerce_get_price_html', 'custom_price_html', 500, 2 ); 

Предполагается, что вы сохраняете каждое «проверенное» состояние под своим собственным мета-ключом и что если состояние не отмечено, поле не существует или «пусто».

Возможно, на самом деле имеет смысл использовать одно значение price_type , а затем сохранить значение per_person или per_group зависимости от состояния проверки (так как цена фактически не может быть обоими типами, не так ли?).

Обновление. Чтобы отладить ситуацию, поместите ее в свой файл functions.php , просмотрите продукт в своем браузере, а затем обновите свой вопрос с помощью вывода:

 function wpse_183901_debug_product() { if ( is_singular( 'product' ) ) { echo '<pre>'; echo esc_html( print_r( get_post_meta( get_queried_object_id() ), true ) ); echo '</pre>'; exit; } } add_action( 'template_redirect', 'wpse_183901_debug_product' );