Wordpress post filter

时间:2016-10-16 作者:Valijon Rahimov

按发布年份筛选自定义帖子类型。我有这样的想法:

2015/2016年的过滤柱。

年份是用$重定向的链接,如\'?year=2015\'\'?year=2016\'

在自定义页面中,我有以下内容:

$year = isset($_GET[\'year\']) ? $_GET[\'year\'] : \'\';

if ($year == \'2015\') {
    $the_query = new WP_Query(\'year=2015&post_type=events\');
} else {
    $the_query = new WP_Query(\'post_type=events\');
}
但如果我点击2015年,我会重定向到404页。我试着这样提问$the_query = new WP_Query(\'year=2015&post_type=events\'); 它可以工作,但不能让它与GET一起工作,或者有更好的方法来做到这一点吗?(对不起我的英语)

还尝试了以下操作:

$year = isset($_GET[\'year\']) ? $_GET[\'year\'] : \'\';

$the_query = new WP_Query(\'year=\'. (int)$year .\'&post_type=events\');
这里的问题是,我2016年的帖子正在过滤,但如果我通过2015年,让Parameter im重定向到404页面。

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

我建议挂入pre_get_posts() 函数,通过将此代码添加到函数中来更改查询。php文件:

<?php
function filter_by_date( $query ) {

   if ( ! is_admin() && $query->is_main_query() ) {

      if ( isset( $_GET[\'year\'] ) ) {
         $query->set( \'year\', $_GET[\'year\'] );
         $query->set( \'post_type\', \'events\' );
      }
   }

   return $query;

}
add_action( \'pre_get_posts\', \'filter_by_date\' );
?>

相关推荐

如何修改WP_INCLUDE/BLOCKS/LATEST_posts.php

我是WordPress开发的初学者,希望得到一些帮助。我在一个简单的WordPress网站上工作。基本上,用户希望在主页上显示最新的帖子。我使用了最新帖子块,并将其设置为显示整个帖子内容,现在用户不希望帖子标题链接到单个帖子页面(因为帖子的内容显示在主页上)。如何安全地修改模板文件,使其像h2标记一样使用,而不是在主题中使用的href标记。我知道您可以创建子主题并修改wp_content 文件,但我不确定如何处理中的文件wp_include. 我读到一些关于修改functions.php 但我不确定,如果