Получить продукт, используя WP_Query - PullRequest
0 голосов
/ 24 октября 2019

Что ж, я пытаюсь получить продукт WooCommerce, используя WP_Query, с некоторыми параметрами

Это дает мне результаты, но сортировка по названию продукта не работает, даже когда я пытаюсь добавить категорию в параметрахне работает.

вот что я пытаюсь:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$params = array(
    'post_type' => 'product',
    'post_status' => 'publish',
    'posts_per_page' => 20,
//    'category__in' => array(22),
    'paged' => $paged,
    'orderby' => 'title',
    'order' => 'ASC'
);

$query = new WP_Query( $params );


$total_found_posts = $query->found_posts;
$total_page = ceil($total_found_posts / 20);

Любая помощь оценят

спасибо

Ответы [ 2 ]

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

Ну, мой запрос работал правильно, проблема заключалась в том, что мой плагин "Post Types Order" добавлял дополнительное условие к предложению orderby.

Я изменил мои параметры на это:

$params = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => 20,
'ignore_custom_sort' => true,
'paged' => $paged,
'orderby' => 'title',
'order' => 'ASC'

);

и все заработало как я хотел.

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

Ваш запрос сработал для меня. Возможно, проблема в том, как вы извлекаете продукты и отображаете их?

Я реализовал на одном из своих сайтов следующее и перечислил первые 20 продуктов в алфавитном порядке:

add_action('astra_header_before', 'entreprenerds_callback');
function entreprenerds_callback() {
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $params = array(
        'post_type' => 'product',
        'post_status' => 'publish',
        'posts_per_page' => 20,
        // 'category__in' => array(22),
        'paged' => $paged,
        'orderby' => 'title',
        'order' => 'ASC'
    );
    $query = new WP_Query( $params );
    $total_found_posts = $query->found_posts;
    $total_page = ceil($total_found_posts / 20);

    echo "## " . $total_found_posts . " ##"; // shows me 51

    while($query->have_posts()) {
        $query->the_post();
        echo get_the_title() . '<br />';
    }
}

Используете ли вы правильный объект запроса в вашем цикле?

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