Добавить в корзину кнопку только на одном простом продукте - PullRequest
0 голосов
/ 25 марта 2019

Я хотел бы показать кнопку «Добавить в корзину» только на одном простом продукте.

У меня есть два вида продуктов: - вариант товара только с кнопкой «Запросить цену»> я скрыл добавить в корзину -простой продукт только с кнопкой «Добавить в корзину»> у меня есть скрытая кнопка запроса котировки

Но для нового продукта требуются обе кнопки.

Эта часть кода скрывает кнопку цитаты и работает:

if( !function_exists( 'ywraq_hide_quote_for_simple_products' ) ){
    add_filter( 'yith_ywraq_before_print_button', 'ywraq_hide_quote_for_simple_products', 10, 2 );
    /**
     * @param bool $show
     * @param WC_Product $product
     * @return bool
     **/
    function ywraq_hide_quote_for_simple_products( $show, $product ){

        if( $product->is_type( 'simple' ) ){
            $show = false;
        }

        return $show;
    }
}

в коде выше я пытаюсь добавить код ниже, чтобы показать обе кнопки, не работают:

add_filter('woocommerce_is_purchasable', 'onlyonesimpleproduct_is_purchasable', 10, 2);

function onlyonesimpleproduct_is_purchasable( $is_purchasable, $object ) {
    // Checks to see if the product id is 135, 
    // returns true if is, false otherwise.  
    return ( 135 === $object->id );
}

и эта часть скрыть добавить в корзину и работает:

add_action( 'woocommerce_single_product_summary', 'hide_add_to_cart_button_variable_product', 1, 0 );
function hide_add_to_cart_button_variable_product() {

remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
}

Не могли бы вы помочь мне реализовать вторую часть кода внутри первой части?Спасибо за поддержку.

1 Ответ

0 голосов
/ 27 марта 2019

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

Поэтому я решил показать обе кнопки и использовать функцию, чтобы скрыть одну из них, кнопку «запросить цену» на простом продукте. Я использую часть кода этой темы Отключение кнопки «Добавить в корзину» для определенных продуктов WooCommerce

Изначально код скрывает кнопку добавления в корзину, но я преобразую ее следующим образом:

// Add a custom field in the Product data's General tab (for simple products).
add_action( 'woocommerce_product_options_general_product_data', 'add_general_product_data_custom_field' );
function add_general_product_data_custom_field() {
    woocommerce_wp_checkbox( array( // Checkbox.
        'id'            => '_not_ready_to_quote',
        'label'         => __( 'No quote', 'woocommerce' ),
        'wrapper_class' => 'show_if_simple',
    ) );
}

// Save custom field value
add_action( 'woocommerce_admin_process_product_object', 'save_general_product_data_custom_field', 10, 1 );
function save_general_product_data_custom_field( $product ) {
    $product->update_meta_data( '_not_ready_to_quote', isset( $_POST['_not_ready_to_quote'] ) ? 'yes' : 'no' );
}

// Make not request quote products with '_not_ready_to_quote' meta data set to "yes" (for simple products)
add_filter( 'yith_ywraq_before_print_button', 'ywraq_hide_quote_for_simple_products', 10, 2);
function ywraq_hide_quote_for_simple_products( $show, $product ) {
    return 'yes' === $product->get_meta( '_not_ready_to_quote' ) && $product->is_type('simple') ? false : $show;

}

// Change button text to "No quote" for simple products not request quote.
add_filter( 'woocommerce_product_request_quote_text', 'filter_product_request_quote_text', 10, 2 );
function filter_product_request_quote_text( $button_text, $product ) {
    if ( 'yes' === $product->get_meta( '_not_ready_to_quote' ) && $product->is_type('simple') ) {
        $button_text =  __( 'No quote', 'woocommerce' );
    }
    return $button_text;
}

Надеюсь, это когда-нибудь кому-нибудь поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...