一般WordPress主题的首页文件index.php中默认都是输出所有分类的日志,但是我们有时候不希望某个分类的内容显示到首页上面,有没有办法让WordPress首页不显示指定分类的文章呢?答案是肯定的,而且方法还不止是一种,结贝号用了两天时间来寻找和测试,确定了以下几种方法是有效的:
方法一:使用query_posts() 函数
WordPress 默认模板中,主循环调用所有文章的方式如下:
//主循环内容
如果我们要排除某分类,可以使用 query_posts() 函数。
1、要显示某些分类的文章,可以用cat参数来指定,如:
表示调用分类ID为1和5的分类文章
2、要排除某些分类,只要在前面添加减号:
表示不调用分类ID为1和5的分类文章.
还可以用来显示特定的文章:
query_posts( ‘p=2′ );
要定义显示文章的数量,你可以使用 posts_per_page 参数:
query_posts( ‘posts_per_page=5′ );
有的文章说需要在php endwhile;后面添加wp_reset_query();既这样,这个是何道理我还没搞懂,测试了一下不加也可以。
方法二:使用WP_Query函数:
要控制哪些文章在循环中显示,需要定义在WP_Query中的参数,即修改
$query = new WP_Query( $args );.
目前有5种参数,比较常用的是参数是 cat 和 category_name 。
若你要显示你的 tech 分类,而它的分类ID是1,那么你可以使用参数cat:
$query = new WP_Query( ‘cat=1′ );
或者可以使用参数 category_name 来达到同样的效果:
$query = new WP_Query( ‘category_name=tech’ );
若想多添加几个分类,则需要用逗号分隔。
$query = new WP_Query( ‘cat=1,7,121′ );
或
$query = new WP_Query( ‘category_name=news,reviews,tutorials’ );
在分类ID前加上减号来排除某一类的所有文章。注意,不可以使用category_name 参数来排除类别。
$query = new WP_Query( ‘cat=-1′ );
cat 和 category_name,都是从文章列表中包含或排除某些类别。
其他三个参数是 category_and、category_in和category_not_in。
category_and显示多个分类的文章:
$query = new WP_Query( array( ‘category__and’ => array( 1, 7 ) ) );
category_in是一个or函数:
$query = new WP_Query( array( ‘category__in’ => array( 7, 127 ) ) );
排除多个类别:
$query = new WP_Query( array( ‘category__not_in’ => array( 2, 6 ) ) );
方法三:修改functions.php文件
在functions.php文件的?>符号前面添加如下代码:
function custom_exclude_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( ‘cat’, ‘-7’ ); //-7表示需要排除的分类目录
}
}
add_action( ‘pre_get_posts’, ‘custom_exclude_category’ );
方法四:使用WordPress插件(Simply Exclude和Ultimate Category Excluder)
对代码不熟悉的朋友也可以使用以下两款WordPress分类控制插件
Simply Exclude:可以让你在首页、归档页、搜索页、RSS中排除或包含某些分类、作者、标签的文章,使用起来也非常简单。
Ultimate Category Excluder:能让你容易的排除某些分类在主页、存档页和RSS中。不同于Simply Exclude的是他只能排除某些分类,不能排除作者、标签等。
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果有侵权之处请第一时间联系我们删除。敬请谅解! E-mail:jiebeih@foxmail.com
暂无评论内容