如何在wordpress中使用in_category?

时间:2016-09-30 03:31:01

标签: wordpress

我想将投资组合项目的所有帖子作为一个类别提取出来。但这段代码对我不起作用。

 <?php if(have_posts()):
           if(in_category('Portfolio Projects')):
              while(have_posts()):
                    the_post(); 
    ?>
         <p><?php the_title(); ?></p>
    <?php 
                   endwhile;
                 endif; 
             endif; 
     ?>

1 个答案:

答案 0 :(得分:0)

我认为按照你编写的顺序是不可能的。在您想要决定是否属于某个类别时,不会设置$ post对象。

请看这里 the_post()https://developer.wordpress.org/reference/functions/the_post/

以下代码应该有效:

<?php
     if(have_posts()):
        while(have_posts()):
            the_post();
            if(in_category('Portfolio Projects')):
?>
                <p><?php the_title(); ?></p>
<?php 
            endif; 
        endwhile;
    endif; 
?>

但我认为仅查询您想要的类别中的帖子会更好,而不是查询所有帖子,然后决定(适用于帖子和类别 - 没有自定义内容):

<?php $args = array(
    'posts_per_page'   => -1,
    'offset'           => 0,
    'category'         => '',
    'category_name'    => 'Portfolio Projects',
    'orderby'          => 'date',
    'order'            => 'DESC',
    'include'          => '',
    'exclude'          => '',
    'meta_key'         => '',
    'meta_value'       => '',
    'post_type'        => 'post',
    'post_mime_type'   => '',
    'post_parent'      => '',
    'author'       => '',
    'author_name'      => '',
    'post_status'      => 'publish',
    'suppress_filters' => true 
);
$posts_array = get_posts( $args ); ?>

这是该功能的链接:https://codex.wordpress.org/Template_Tags/get_posts

获得 $ post_array 后,你必须遍历它并按照你想要的方式显示它们。