Скрыть отображаемые цены на продукты из полей дополнений Woocommerce - PullRequest
0 голосов
/ 01 марта 2019

В Woocommerce я использую плагин Woocommerce Product и пытаюсь выяснить, как я могу скрыть цены из полей дополнений.

Это текущий выводс ценами:

with prices

Это желаемый результат без цен (выделено желтым цветом) :

without the yellow marked price

Я понял, что select.php в product-addons / templates / addons / select.php может быть решением

Я плох вPHP, поэтому я пытаюсь закомментировать некоторые вещи ... если я закомментирую строку 27, то у меня есть желаемый результат, но цена из аддонов не учитывается в общую цену продукта:

$price_raw    = apply_filters( 'woocommerce_product_addons_option_price_raw', $price, $option );

select.php код:

<?php
/**
 * The Template for displaying select field.
 *
 * @version 3.0.0
 */

$loop = 0;
$field_name = ! empty( $addon['field_name'] ) ? $addon['field_name'] : '';
$required   = ! empty( $addon['required'] ) ? $addon['required'] : '';
$current_value = isset( $_POST['addon-' . sanitize_title( $field_name ) ] ) ? wc_clean( $_POST[ 'addon-' . sanitize_title( $field_name ) ] ) : '';
?>
<p class="form-row form-row-wide wc-pao-addon-wrap wc-pao-addon-<?php echo sanitize_title( $field_name ); ?>">
    <select class="wc-pao-addon-field wc-pao-addon-select" name="addon-<?php echo sanitize_title( $field_name ); ?>" <?php if ( WC_Product_Addons_Helper::is_addon_required( $addon ) ) { echo 'required'; } ?>>

        <?php if ( empty( $required ) ) { ?>
            <option value=""><?php esc_html_e( 'None', 'woocommerce-product-addons' ); ?></option>
        <?php } else { ?>
            <option value=""><?php esc_html_e( 'Select an option...', 'woocommerce-product-addons' ); ?></option>
        <?php } ?>

        <?php foreach ( $addon['options'] as $i => $option ) {
            $loop++;
            $price        = ! empty( $option['price'] ) ? $option['price'] : '';
            $price_prefix = 0 < $price ? '+' : '';
            $price_type   = ! empty( $option['price_type'] ) ? $option['price_type'] : '';
            $price_raw    = apply_filters( 'woocommerce_product_addons_option_price_raw', $price, $option );
            $label        = ( '0' === $option['label'] ) || ! empty( $option['label'] ) ? $option['label'] : '';

            if ( 'percentage_based' === $price_type ) {
                $price_for_display = apply_filters( 'woocommerce_product_addons_option_price',
                    $price_raw ? '(' . $price_prefix . $price_raw . '%)' : '',
                    $option,
                    $i,
                    'select'
                );
            } else {
                $price_for_display = apply_filters( 'woocommerce_product_addons_option_price',
                    $price_raw ? '(' . $price_prefix . wc_price( WC_Product_Addons_Helper::get_product_addon_price_for_display( $price_raw ) ) . ')' : '',
                    $option,
                    $i,
                    'select'
                );
            }

            $price_display = WC_Product_Addons_Helper::get_product_addon_price_for_display( $price_raw );

            if ( 'percentage_based' === $price_type ) {
                $price_display = $price_raw;
            }
            ?>
            <option data-raw-price="<?php echo esc_attr( $price_raw ); ?>" data-price="<?php echo esc_attr( $price_display ); ?>" data-price-type="<?php echo esc_attr( $price_type ); ?>" value="<?php echo sanitize_title( $label ) . '-' . $loop; ?>" data-label="<?php echo esc_attr( wptexturize( $label ) ); ?>"><?php echo wptexturize( $label ) . ' ' . $price_for_display; ?></option>
        <?php } ?>

    </select>
</p>

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Добавить этот код Functions.php

add_filter( 'woocommerce_get_price_html', 'react2wp_woocommerce_hide_product_price' );
function react2wp_woocommerce_hide_product_price( $price ) {
return 'Rate on Call';
0 голосов
/ 01 марта 2019

Не переопределяя шаблон и не изменяя основной код, вы можете попробовать использовать одну из следующих перехваченных функций:

add_filter( 'woocommerce_product_addons_option_price', '__return_empty_string' );

Или, возможно, вам нужно добавить несколько операторов IF, как в этом примере:

add_filter( 'woocommerce_product_addons_option_price', 'filter_product_addons_option_price', 10, 4 );
function filter_product_addons_option_price( $price, $option, $i, $type ){
    global $product;

    if( $product->get_id() == 123 && $type = 'select' ) {
        $price '';
    }
    return $price;
}

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

...