通过unctions.php中的wp查询进行Pagenavi分页,为每个页面显示相同的内容

时间:2013-06-28 作者:Rob

我最近在创建即将到来的活动列表方面得到了很多帮助(请参见此处Showing upcoming events including todays event - StackOverflow), 因此,我的分页使用wp_pagenavi() 已损坏。

目前,当你点击第2页时,它只显示与第一页相同的帖子。虽然URL实际上更改为第/2页/3页等。

我有这个functions.php 文件:

function filter_where( $where = \'\' ) {
$where .= " AND post_date >= \'" . date("Y-m-d") . "\'";
return $where;
}

add_filter( \'posts_where\', \'filter_where\' );

$query = new WP_Query(
    array(
        \'post__not_in\' => array(4269),
        \'paged\' => get_query_var(\'paged\'),
        \'post_type\' => \'whatson\',
        \'exclude\' => \'4269\',
        \'post_status\' => \'future,publish\',
        \'posts_per_page\' => 20,
        \'order\' => \'ASC\'
    )
);

remove_filter( \'posts_where\', \'filter_where\' );
我的循环如下:

<?php while ( $query->have_posts() ) : $query->the_post(); ?>
// content
<?php endwhile; // end of the loop.  ?>
<?php if (function_exists(\'wp_pagenavi\')) { wp_pagenavi( array( \'query\' => $query ) ); } ?>
正在执行print_r ($query); 在拆除过滤器之前,会产生以下情况:

enter image description here

2 个回复
最合适的回答,由SO网友:Rob 整理而成

最终通过以下方式解决了此问题:

function my_filter_where( $where = \'\' ) {
    global $wp_query;
    if (is_array($wp_query->query_vars[\'post_status\'])) {

        if (in_array(\'future\',$wp_query->query_vars[\'post_status\'])) {
        // posts today into the future
        $where .= " AND post_date > \'" . date(\'Y-m-d\', strtotime(\'now\')) . "\'";
        }
    }
    return $where;
}
add_filter( \'posts_where\', \'my_filter_where\' );
以及:

<?php
$wp_query = array(
        \'post__not_in\' => array(4269),
        \'paged\' => get_query_var(\'paged\'),
        \'post_type\' => \'whatson\',
        \'exclude\' => \'4269\',
        \'posts_per_page\' => 20,
        \'order\' => \'ASC\',
        \'orderby\' => \'date\',
        \'post_status\' =>array(\'future\',\'published\'));
query_posts($wp_query);
?>

                    <?php 
                    if ($wp_query->have_posts()) {
                    while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
                        Content
                    <?php endwhile; // end of the loop.
                    }  ?>

                    <?php if (function_exists(\'wp_pagenavi\')) { wp_pagenavi( array( \'query\' => $wp_query ) ); } ?>

SO网友:Dean Ngo

这是设置分页的代码

   if ( get_query_var(\'paged\') ) { $paged = get_query_var(\'paged\'); }
    elseif ( get_query_var(\'page\') ) { $paged = get_query_var(\'page\'); }
    else { $paged = 1; }
和查询代码

$my_query = new WP_Query( array( \'posts_per_page\'=>6,\'category_name\'=>\'san-pham\', \'paged\' => $paged ) );
这工作很好。你和我一样有问题

结束

相关推荐

如何将php的等价物添加到一个页面(作为插件?)

我是Wordpress的新手。我有一个自己编写的网站。其中一个页面具有PHP函数,可以获取google日历提要(带有硬编码的登录信息)并根据需要显示它。我现在正在wordpress上建立一个新站点,在那里我想使用相同的代码。我的阅读表明,我应该将其作为创建新插件来处理,这样我就不会用任何主题更新来覆盖它。我的问题是:如何简单地将PHP代码复制到它自己的插件文件夹中的一个文件中,然后使用一个快捷码像include一样访问它?具体地说,我不明白我是否能够使用shortcode作为<php? includ