如果has_category,Wordpress显示帖子

时间:2016-07-20 17:23:37

标签: php wordpress

如何编辑循环以便只显示包含类别的帖子?我希望能够在不具有类别的页面上隐藏帖子。

2 个答案:

答案 0 :(得分:1)

以下是一些可以帮助的资源:

https://developer.wordpress.org/reference/functions/query_posts/

https://codex.wordpress.org/Function_Reference/WP_Query#Parameters

修改

由于所有帖子在创建时都会收到一个类别,无论是uncategorized还是您指定的类别,您都可以通过以下方式获得仅设置类别的帖子:

$args = array(
    'cat' => '-1' //ID of your `uncategorized` category
);
$query = new WP_Query($args);
print_r($query);

您实际上是在过滤掉具有uncategorized类别的帖子并完成其余内容。

编辑2

可能发生的另一件事是,如果您在while语句后执行查询。当我在你写下你的评论时,我想到了这一点:

<?php while(have_posts()) : the_post(); ?> 
<?php if (has_category()) { get_template_part("post", "archive-view"); } ?> 
<?php endwhile; ?>

我之前发布的代码应该放在while语句之前。像这样:

<?php
$args = array(
    'cat' => '-1' //ID of your `uncategorized` category
);
$query = new WP_Query($args);
while(have_posts()) : the_post(); ?>
...
<?php endwhile; ?>

答案 1 :(得分:-1)

$term_ids = get_terms( 
    'TAXONOMY_NAME', 
    [ // Array of arguments, see get_terms()
        'fields' => 'ids' // Get only term ids to make query lean
    ]
);

if (    $term_ids // Check if we have terms
    && !is_wp_error( $term_ids ) // Check for no WP_Error object
) {
    $args = [
        'tax_query' => [
            [
                'taxonomy' => 'TAXONOMY_NAME',
                'terms'    => $term_ids,
            ]
        ],
    ];

$q = new WP_Query( $args );

    // Run your loop as needed. Remeber wp_reset_postdata() after the query
}

有关更多信息,请查看以下链接

https://wordpress.stackexchange.com/questions/196394/get-list-of-posts-which-have-at-least-one-term-from-a-custom-taxonomy-with-wp-qu