Фильтрация результатов поиска с помощью Wordpress - PullRequest
1 голос
/ 22 января 2010

Я пытаюсь настроить страницу Результаты поиска с двумя столбцами.В первом столбце будут представлены результаты по всем категориям, кроме одной ( Галереи ), а во втором столбце будут представлены только категории Галереи .

query_posts() просто сбрасывает мои результаты,Это то, что я получил до сих пор.Сломано:

        <?php 
            $s = get_query_var('s');
            query_posts('s=' . $s . '&cat=164'); 
        ?>

        <?php 
            // First Loop 
        ?>
        <div class="contentLeft">
            <ul class="postListSmall related">
                <?php while (have_posts()) : the_post(); ?>
                    [do stuff]
                <?php endwhile; ?>

        <?php 
            // Second Loop
        ?>
            <?php query_posts('cat=-164'); ?>
            <?php rewind_posts(); ?>
                <?php while (have_posts()) : the_post(); ?>
                    [do stuff]
                <?php endwhile; ?>

    <?php else : ?>
                [do stuff]
    <?php endif; ?>

Что делать?

1 Ответ

0 голосов
/ 13 марта 2017

Я знаю, что это старый пост, но у меня похожая проблема и я поделюсь с вами:

  1. Вы создаете запрос, затем вызываете второй запрос, но затем пытаетесь перемотать запрос. Это не то, как работает функция перемотки. Взгляните на документацию Rewind . Вы также говорите:

query_posts () просто сбрасывает мои результаты.

Тогда почему вы вызываете функцию перемотки сразу после нового запроса? Кроме того, если вы сбрасываете результаты, то почему это совершенно другой запрос? Это:

        $s = get_query_var('s');
        query_posts('s=' . $s . '&cat=164'); 

Не то же самое, что и это:

        <?php query_posts('cat=-164'); ?>
        <?php rewind_posts(); ?>

Чтобы получить результаты в 2 столбца для разных категорий, я сделал следующее: используйте только один цикл, не используйте перемотку, используйте get_the_category в выражении if в вашем цикле, например:

<?php 
$s = get_query_var('s');
query_posts('s=' . $s . '&cat=164'); 

while (have_posts()) : the_post();
    foreach(get_the_category() as $category){
        if($category->name == "category name"){
            //Concatenate to the left div
        } else {
            //concatenate to the right div
        } ?>

Надеюсь, это поможет.

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