WordPress分页问题

时间:2012-05-31 作者:Alessandro Benoit

首先,感谢大家为我通过stackexchange获得的所有知识库。我第一次找不到问题的答案。

问题是,使用此自定义查询(其目的是通过具有多个分类字段的帖子进行搜索):

global $wp_query;
$tax_query = array();
$parametri = array(
                        \'ih_tipo_struttura\' =>  array(\'tipo_struttura\',\'IN\'),
                        \'ih_localita\'       =>  array(\'localita\', \'IN\'),
                        \'ih_stelle\'         =>  array(\'stelle\', \'IN\'),
                        \'ih_categorie\'      =>  array(\'categorie\', \'AND\'),
                        \'ih_servizi\'        =>  array(\'servizi\', \'AND\')
                    );
// Faccio il post dei parametri e li inserisco nella query
foreach ($parametri as $post => $taxonomy) {
    if ( isset($_GET[$post]) && !empty($_GET[$post]) ){ 
        $tax_query[] = array(
                    \'taxonomy\'  => $taxonomy[0],
                    \'field\'     => \'slug\',
                    \'terms\'     => $_GET[$post],
                    \'operator\'  => $taxonomy[1]
                    ); 
    }
}
// Parametri base della query
$args = array( 
    \'post_type\' => \'post\',
    \'tax_query\' => $tax_query
);
// Parametri paginazione
if ( $pagination ) {
    $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
    $args[\'posts_per_page\'] = 2;
    $args[\'paged\'] = $paged;
} else {
    $args[] = array( \'posts_per_page\' => 20);   // Se imposto la paginazione a false ritorno i primo 20 risultati
}
// Eseguo la query
$wp_query = new WP_Query( $args );
return $wp_query;
在我尝试分页之前,一切都正常。

当我通过url传递时,一些$\\u会得到如下参数:

http://mywebsite/ricerca/?ih_localita%5B%5D=riccione&ih_localita%5B%5D=rimini&ricerca_hotel=true

http://mywebsite/ricerca/page/2/?ih_localita=riccione&ih_localita%5B%5D=rimini&ricerca_hotel=true
没有问题,但如果尝试:

http://mywebsite/ricerca/page/2/?ih_localita%5B0%5D=riccione&ih_localita%5B1%5D=rimini&ricerca_hotel=true
wordpress会切断返回url的所有搜索参数,如下所示:

http://mywebsite/ricerca/page/2/?ricerca_hotel=true
我快疯了,所以我真的很感谢你的帮助。

Thx公司

2 个回复
SO网友:Chip Bennett

不要踩踏$wp_query 全球的使用您自己的变量来保存查询:

$custom_query = new WP_Query( $args );
然后,您可以使用一个小技巧来修复分页。在循环之前执行此操作:

global $wp_query;
// Store it for safekeeping
$temp_wp_query = $wp_query;
// Now blank it out
$wp_query = null;
// Now populate it with your custom query
$wp_query = $custom_query;
然后,在循环关闭后,恢复原始查询对象:

$wp_query = $temp_wp_query;
现在,分页应该可以正常工作了。

SO网友:Alessandro Benoit

再看一眼,我发现问题可能在于分页时的url重写,这与此url格式不兼容:

page/2/?ih_localita%5B0%5D=riccione&ih_localita%5B1%5D=rimini
切断所有多复选框参数并将其重写为:

page/2/
现在,我的解决方案可能是使用另一种格式传递复选框的多个值,因此我将执行以下操作

page/2/?ih_localita=rimini,riccione
这实际上很好,但如果能找出问题所在,那就太好了。。。

结束

相关推荐

How to use pagination?

我有一个页面的以下代码,在这里我拉一张照片,标题和最后10篇文章的摘录。问题是,我不知道如何添加分页?我也安装了WP PageNavi。我已经看到一些类似的问题得到了解决,但我根本无法真正理解这个概念,我首先尝试确保这是可能的?<?php /* Template Name: Opinion */ ?> <?php get_header(); ?> <div id=\"primary\"> <div id=\"