是什么原因导致我的wp_Query分页中断?

时间:2012-01-20 作者:jnthnclrk

我正在使用categories和wp\\U query在上创建“高级搜索”功能my website. 它工作得很好,直到最近我才注意到分页被破坏了。以下两个链接应说明问题:

在第1页,我得到185个结果:

http://www.barbadospropertylist.com/?cat%5Boffer%5D=24&cat%5Btype%5D=-1&cat%5Blocation%5D=-1&cat%5Bbedrooms%5D=-1&cat%5Bfurnishings%5D=-1&budget=1000000&cat%5Bparish%5D=-1&cat%5Bagent%5D=-1&cat%5Bbathrooms%5D=-1&submit=Advanced+Search

但在随后的页面上,查询字符串会中断:

http://www.barbadospropertylist.com/page/2/?cat%5Boffer%5D=24&cat%5Btype%5D=-1&cat%5Blocation%5D=-1&cat%5Bbedrooms%5D=-1&cat%5Bfurnishings%5D=-1&cat%5Bparish%5D=-1&cat%5Bagent%5D=-1&cat%5Bbathrooms%5D=-1&budget=1000000&submit=Advanced+Search

您应该看到第二个链接重定向到:

http://www.barbadospropertylist.com/page/2/?budget=1000000&submit=Advanced%20Search

由于WordPress最近的升级,我不知道这可能是什么原因。任何指点都是非常非常受欢迎的!我整天都在想这个问题。:)

这是我的查询代码:

    query_posts(
    array_merge(
        wp_query->query,
        array(
            \'category__and\' => $pladvsearchcatids,
            \'meta_key\' => \'price\',
            \'orderby\' => \'meta_value_num\',
            \'meta_compare\' => \'<=\',
            \'meta_value\' => $plbudget,
            \'order\' => \'DESC\'
        )
    )
);
只是注意到一些非常奇怪的事情。当我下载我的网站并在本地工作时,问题就消失了。查询字符串在第2页上没有重定向,在结果中分页的效果与预期一样。

2 个回复
SO网友:Ole Henrik Skogstrøm

这可能是因为在使用query\\u post运行自定义查询时需要包含分页信息。因为自定义query\\u post命令会忽略query\\u posts命令的任何默认值。下面是一个查询示例,我用它在一个更简单的情况下解决了这个问题(只是为了从查询中排除单个类别):

   <?php
         if ( is_home() ) {
            $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
            query_posts("cat=-19&paged=$paged");
         }
    ?>
下面是一个示例,说明如何将其包含在查询中。不知道这是否适用于您,请尝试并给我反馈。:)

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

    query_posts(
    array_merge(
        $wp_query->query,
        array(
            \'category__and\' => $pladvsearchcatids,
            \'meta_key\' => \'price\',
            \'orderby\' => \'meta_value_num\',
            \'meta_compare\' => \'<=\',
            \'meta_value\' => $plbudget,
            \'order\' => \'DESC\',
            \'paged\' =>  $paged
        )
    )
);

SO网友:kaiser

请尝试以下代码:

$result = query_posts(
    wp_parse_args(
        $GLOBALS[\'wp_query\']->query,
        array(
            \'category__and\' => $pladvsearchcatids,
            \'meta_query\' => array(
                array(
                    \'key\' => \'price\',
                    \'value\' => $plbudget,
                    \'compare\' => \'<=\'
                )
            ),
            \'orderby\' => \'meta_value_num\',
            \'order\' => \'DESC\',
            \'paged\' => get_query_var( \'paged\' ) ? get_query_var( \'paged\' ) : 1
        )
    )
);
// Check the output/query result:
echo \'<pre>\'; print_r( $result ); echo \'</pre>\';
请注意,您的orberby 值仅接受数字值。你可以试试meta_value 相反,如果您的输出(最终)是字符串。在这种情况下compare 声明<= 行不通。

结束

相关推荐

将Taxonomy Image代码与Get_Categories代码一起使用

我使用分类图像将图像与类别相关联。我正在使用以下代码,一个用于显示类别,另一个用于显示图像。下面是显示我的类别的代码。<?php $cat_id = get_query_var(\'cat\'); $catlist = get_categories(\'hide_empty=0&child_of=\' . $cat_id); echo \"<ul>\"; foreach($catlist as $categories_item)