Показать варианты продукта на странице категории и магазина - PullRequest
0 голосов
/ 23 сентября 2018

Я хотел бы отобразить варианты продукта для некоторых (не всех) переменных продуктов на страницах магазина и категории продуктов на основе настраиваемого поля, которое я планирую добавить к каждому переменному продукту.Чтобы пагинация работала, я могу подключиться к хуку woocommerce_product_query в WC_Query :: product_query ($ q), но не могу понять, как изменить запрос, чтобы получить то, что мне нужно.

Логика, которую я хочу применить:

//Pseudo-code
$loop = $query->get_all_products // i.e. not just for one page
foreach ( $loop as $product) {
    if ($product->is_simple) {
        display_simple($product)
    } else {
        $variations = wc_get_products($product->get_children());
        foreach ($variations as $product) {
            if ($product->custom_show_on_archive_pages) {
                display_variation($product)
            }            
        }
    }    
}

Проблема с вышеприведенным (кроме псевдокода) заключается в том, что он предполагает, что у нас есть массив с именем $loop, но на самом деле у нас есть объект запроса.

Мой идеал - изменить запрос так, чтобы он генерировал результаты в соответствии с псевдокодом, и тогда мой шаблон archive-product.php может использовать if / else для отображения простых и переменных продуктов.

Что-то вроде этого в моем functions.php:

add_action( 'woocommerce_product_query', 'show_variable_products');

function show_variable_products( $q ) {

    $meta_query = $q->get('meta_query');

    // Do something

    $q->set('meta_query', $meta_query);
}

Мне интересно, нужно ли мне как-то запустить несколько запросов:

  1. Исходный запросно отфильтрованы по родительским продуктам
  2. Дочерние элементы этих родительских продуктов (т. е. вариации) отфильтрованы по тем, с установленным настраиваемым полем
  3. Исходный запрос, но отфильтрован по простым продуктам
  4. Слияние (2) и (3)

Возможно ли это?

В качестве альтернативы, есть ли другое решение (не предполагающее покупку плагина)?

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