Woocommerce - скрытие строки "SPECIALS", если в продаже нет товаров - PullRequest
0 голосов
/ 31 марта 2020

У меня есть сайт, на котором есть строка Карусель совы, посвященная Еженедельным скидкам.

Я пытаюсь скрыть эту строку, если ни один продукт не указан как "В продаже". Это то, что я имею до сих пор, но что-то не работает, и я не могу понять, что. Спасибо за помощь.

// -----------------------------------------
// HIDE WEEKLY SPECIALS IF THERE ARE NO PRODUCTS

function weeklyspecials() {
    $args = array(
            'post_type'      => 'product',
            'posts_per_page' => 4,
            'meta_query'     => array(
                    'relation' => 'OR',
                    array( // Simple products type
                        'key'           => '_sale_price',
                        'value'         => 0,
                        'compare'       => '>',
                        'type'          => 'numeric'
                    ),
                    array( // Variable products type
                        'key'           => '_min_variation_sale_price',
                        'value'         => 0,
                        'compare'       => '>',
                        'type'          => 'numeric'
                    )
                )
        );
        $loop = new WP_Query( $args );

        if ( ! $loop->have_posts() ) {
            echo '<style>#weeklyspecials {display:none;}</style>';
        }

    wp_reset_postdata();
}
add_action ( 'wp_body_open', 'weeklyspecials' );

РЕДАКТИРОВАТЬ *** ПРОБЛЕМА РЕШЕНА

Оказалось, что моя проблема заключалась в том, что были скрытые продукты ПРОДАЖИ ... почему? Потому что их нет в наличии. Мне пришлось изменить массив с отношением AND, связанным со статусом акции, чтобы он покрывал все.

КОД РАБОТЫ:

// HIDE WEEKLY SPECIALS IF THERE ARE NO PRODUCTS

function weeklyspecials() {
    $args = array(
            'post_type'      => 'product',
            'posts_per_page' => 4,
            'meta_query'     => array(
                    'relation' => 'AND',
                    array(
                    'relation' => 'OR',
                    array( // Simple products type
                        'key'           => '_sale_price',
                        'value'         => 0,
                        'compare'       => '>',
                        'type'          => 'numeric'
                    ),
                    array( // Variable products type
                        'key'           => '_min_variation_sale_price',
                        'value'         => 0,
                        'compare'       => '>',
                        'type'          => 'numeric'
                    )),
                    array( // Stock status
                        'key' => '_stock_status',
                        'value' => 'instock'
                    )
                )
        );
        $loop = new WP_Query( $args );

        if ( ! $loop->have_posts() ) {
            echo '<style>#weeklyspecials {display:none;}</style>';
        }
}
add_action ( 'wp_body_open', 'weeklyspecials' );

Спасибо за помощь!

1 Ответ

0 голосов
/ 31 марта 2020

Добавьте else к вашему if.

// -----------------------------------------
// HIDE WEEKLY SPECIALS IF THERE ARE NO PRODUCTS

function weeklyspecials() {
    $args = array(
            'post_type'      => 'product',
            'posts_per_page' => 4,
            'meta_query'     => array(
                    'relation' => 'OR',
                    array( // Simple products type
                        'key'           => '_sale_price',
                        'value'         => 0,
                        'compare'       => '>',
                        'type'          => 'numeric'
                    ),
                    array( // Variable products type
                        'key'           => '_min_variation_sale_price',
                        'value'         => 0,
                        'compare'       => '>',
                        'type'          => 'numeric'
                    )
                )
        );
        $loop = new WP_Query( $args );

        if ( ! $loop->have_posts() ) {
            echo '<style>#weeklyspecials {display:none;}</style>';
        } else {
            echo '<style>#weeklyspecials</style>';
        }

    wp_reset_postdata();
}
add_action ( 'wp_body_open', 'weeklyspecials' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...