Порядок не работает в пост-цикле WordPress - PullRequest
0 голосов
/ 24 марта 2020

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

Вот запрос, который я использую:

<?php query_posts($query_string . '&orderby=title&order=ASC');?>
<?php if ( have_posts() ) :  while ( have_posts() ) : the_post(); global $product; ?>
<div class="col-md-4 mt-5 mb-5">
    <a href="<?php echo get_permalink( $loop->post->ID ) ?>" class="d-block w-100">
        <div class="image-wrapper">
            <img src="<?php the_post_thumbnail_url(); ?>" class="img-fluid head-image d-block mx-auto">
            <?php if( $product->is_on_sale() ) { ?>
            <div class="image-content">
                <div class="sale">
                    <?php get_template_part('template-parts/part', 'sale'); ?>
                </div>
            </div>
            <?php } ?>
        </div>
    </a>
</div>
<?php endwhile; else: endif; ?>

Когда я удаляю первую строку <?php query_posts($query_string . '&orderby=title&order=ASC');?>, продукты отображаются, но не заказываются.

Кто-нибудь знает, что идет не так?

1 Ответ

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

Есть отличная статья о wp_query и query_posts над stackexchange (https://wordpress.stackexchange.com/questions/1753/when-should-you-use-wp-query-vs-query-posts-vs-get-posts).

Возможно, вы могли бы рассмотреть

$args = array( /* your args: refer to wp_query() for requirements */
$query = new WP_Query($args);

Извините, я на моем телефоне и не могу привести лучшие примеры. Но wp_query является гораздо более предпочтительным вариантом, как указано:

query_posts () слишком упрощен c и проблематичен c способ изменить основной запрос страницы, заменив его новым экземпляром. запроса. Он неэффективен (повторно запускает SQL запросов) и в некоторых обстоятельствах потерпит неудачу (особенно часто при разбивке на посты). Любой современный код WP должен использовать для этой цели более надежные методы, такие как использование хука pre_get_posts. TL; DR никогда не использует query_posts ().

get_posts () очень похож в использовании и принимает те же аргументы (с некоторыми нюансами, как и другие значения по умолчанию), но возвращает массив сообщений, не • Изменить глобальные переменные и безопасно для использования в любом месте.

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

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