Суффикс цены товара с расчетом цены на основе веса в WooCommerce - PullRequest
2 голосов
/ 09 апреля 2019

Я использую " Пользовательский суффикс цены продукта, основанный на категориях продуктов в Woocommerce " ветка ответов, позволяющая настроить отображение цены с префиксом следующим образом:

    $price .= ' ' . __('/ $7.50 per serving');

Но на самом деле мне бы хотелось, чтобы цена в долларах равнялась цене товара, деленной на вес товара. Как бы я это сделал?

Вот мой действительный код, слегка измененный (который использует has_product_categories() из этой темы ) :

add_filter( 'woocommerce_get_price_html', 'conditional_price_suffix', 10, 2 );
function conditional_price_suffix( $price, $product ) {
    // Handling product variations
    $product_id = $product->is_type('variation') ? $product->get_parent_id() : $product->get_id();

    // HERE define your product categories (can be IDs, slugs or names)
    $product_categories = array('monthly-menus');

    if( has_product_categories( $product_categories, $product_id ) )
        $price .= ' ' . __('/ $7.50 per serving');

    return $price;
}

Я перепробовал целую кучу вещей, которые выдавали NAN на переднем конце. Не думай, что я делаю это правильно!

1 Ответ

1 голос
/ 10 апреля 2019

Следующее добавит ваш префикс с расчетной ценой за порцию:

add_filter( 'woocommerce_get_price_html', 'conditional_price_suffix', 10, 2 );
function conditional_price_suffix( $price, $product ) {
    $weight    = (float) $product->get_weight();
    $raw_price = (float) wc_get_price_to_display($product);

    // Handling product variations
    $product_id = $product->is_type('variation') ? $product->get_parent_id() : $product->get_id();

    // HERE define your product categories (can be IDs, slugs or names)
    $product_categories = array('monthly-menus');
    $product_categories = array('clothing');

    if( has_product_categories( $product_categories, $product_id ) && $weight > 0 )
        $price .= ' ' . sprintf( __('/ %s per serving'), strip_tags( wc_price( $weight / $raw_price ) ) );
    return $price;
}

Вы должны будете включить has_product_categories () код функции из этой темы .

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). проверено и работает.

...