在wordpress主页上只显示一个类别

时间:2014-07-03 16:19:04

标签: php wordpress categories posts

我正在尝试在我的主页上只显示一个类别。要做到这一点,我知道我必须编辑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,我只是被告知这应该是一个容易解决的问题。

4 个答案:

答案 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)

More info for argument

<?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();