WC_Product_Query возвращает пустой в functions.php, но работает в archive-product.php - PullRequest
0 голосов
/ 01 октября 2019

Я использую WooCommerce 3.6.5.

Мне нужны все переменные продукты в моем файле functions.php, поэтому для этого я хочу использовать WC_Product_Query в моем файле functions.php, но он всегда возвращает пустые данные. Но тот же код работает в файлах шаблонов WooCommerce (archive-product.php) и возвращает правильные данные.

вот мой код

<code>$query = new WC_Product_Query(array(
            'limit'=>-1,
            'type' => 'variable',
            'return' => 'ids'
        ));
        $variableproducts = $query->get_products();
        echo '<pre>';
echo 'print from functions.php';
print_r($variableproducts);
echo '
';

Может ли кто-нибудь помочь мне, почему WC_Product_Query класс не возвращает правильные данные в functions.php или есть какой-либо другой способ получить все идентификаторы переменных продуктов в файле functions.php?

1 Ответ

0 голосов
/ 01 октября 2019

вот еще один способ сделать это с помощью wc_get_products:

$args = array(
'type' => 'variable',
'limit' => -1,
'return' => 'ids',
);
$variable_products_ids = wc_get_products( $args );

ваш код также должен работать. проблема может быть крючком, который вы используете. Вы также должны отладить его. этот код добавляет все переменные идентификаторы ко всем сообщениям.

add_filter('the_content' , function ($cnt){
    $args = array(
'type' => 'variable',
'limit' => -1,
'return' => 'ids',
);
$variable_products_ids = wc_get_products( $args );
$str = '';
foreach($variable_products_ids as $id){
    $str .= $id . ' ';
}
return $cnt .' '. $str;
}
);
...