我正在尝试在我的主页上只显示一个类别。要做到这一点,我知道我必须编辑index.php文件,但我不知道为什么我的代码没有采取。在这种情况下,我想要显示的帖子类别的ID是“1”
这是代码(我的编辑是最后一行):
<div class="row">
<!-- Contains the loop of all posts -->
<div class="col-md-8" id="post-container">
<!-- Start the Loop. -->
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php if (in_category('1')&& is_home()) continue; ?>
有什么想法吗?
免责声明:我不熟悉php,我只是被告知这应该是一个容易解决的问题。
答案 0 :(得分:1)
为了正确地执行此操作,您需要对主页的数据运行过滤器...其他答案以及您正在执行的操作将无法正常使用分页...例如,如果最后的X帖子不是在您想要展示的类别中,您将得到0或更少的理想结果...
您希望以这种方式运行过滤器..
function exclude_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'cat', 'YOUR CATEGORY ID HERE' );
}
}
add_action( 'pre_get_posts', 'exclude_category' );
这将正常工作,让你仍然使用适当的分页。您可以在此处找到有关过滤器的更多信息 - &gt; http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts
巴特
答案 1 :(得分:0)
试试<?php if (in_category(1)&& is_home()) continue; ?>
。 ID必须是整数,否则将被视为slug。
答案 2 :(得分:0)
<?php $args = array(
'orderby' => 'name',
'order' => 'ASC',
'style' => 'list',
'include' => '',
'hierarchical' => 1,
'title_li' => __( 'Categories' ),
'show_option_none' => __( 'No categories' ),
'number' => 1,
'taxonomy' => 'category',
'walker' => null
); ?>
<?php if (is_home()) { ?>
<ul class="categories">
<?php wp_list_categories($args); ?>
</ul>
<?php } ?>
答案 3 :(得分:-1)
而不是浏览所有帖子并过滤掉您想要的帖子,
尝试使用
query_posts(&#39; cat = 1&#39;);
//这会改变主循环,然后你可以有更多的控制,比如每页发帖等等
if(have_posts()):while(have_posts()):the_post();