Woocommerce Price Text

Estou tentando mostrar depois do preço do meu produto, se o preço é “por pessoa” ou “por grupo”.

Eu criei um campo personalizado para ambos, por exemplo, se o campo personalizado ‘price_per_person’ estiver marcado, o preço seria exibido como $ 100 por pessoa ou se o campo personalizado ‘price_per_person’ estiver marcado, o preço seria exibido como $ 100 por grupo

Comecei com o filtro abaixo, mas todas as consultas que fiz para identificar se o campo personalizado está selecionado não funcionaram.

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 ); } 

Obrigado!

Atualização com saída

 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 ) ) 

Solutions Collecting From Web of "Woocommerce Price Text"

Basta usar o parâmetro $product para obter o valor do campo personalizado e determinar o que retornar:

 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 ); 

Isso é assumir que você salva cada estado “verificado” sob sua própria meta-chave e que, se um estado não for verificado, o campo não existe ou está “vazio”.

Pode realmente ter mais sentido usar um tipo de price_type meta-campo e, em seguida, salvar um valor de per_person ou per_group dependendo do estado verificado (uma vez que um preço na verdade não pode ser ambos os tipos, pode?

Atualização: para depurar a situação, coloque isso em suas functions.php , veja o produto em seu navegador e, em seguida, atualize sua pergunta com a saída:

 function wpse_183901_debug_product() { if ( is_singular( 'product' ) ) { echo '
'; echo esc_html( print_r( get_post_meta( get_queried_object_id() ), true ) ); echo '

'; exit; } } add_action( 'template_redirect', 'wpse_183901_debug_product' );