WordPress have_posts()不返回私密文章

WordPress have_posts()不返回私密文章

问题描述

在我的主题中,category.php页面的代码如下:

    <?php while (have_posts()) : the_post(); ?>
      <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
        <?php
              echo '<a href="'.get_the_permalink().'"><h3>'.get_the_title().'</h3></a>';      
        ?>
     ?>

如果所属分类的帖子已发布,则会在分类页面显示。但是,如果将它们设置为私密,则不会显示。

如何让私密的帖子也显示出来?

解决方案

Publishedprivate 是两个独立的设置,一个是状态,另一个是可见性。一篇帖子可以同时被设置为 publishedprivate 。如果是这种情况,它将在 have_posts() 中对于已登录的管理员和拥有帖子的编辑(并且标题有“私密:”前缀)显示。草稿永远不会显示。

post status = published | draft

post visibility = public | private | password protected

如果你想覆盖默认行为,你必须使用自己的WPQuery或者使用类似以下的方法更改主查询:

function my_private_posts_in_categories(query) {
    if(query->is_main_query() && query->is_category()) {query->set('post_status', ['private', 'publish']);
        $query->set('posts_per_page', 15);
    }
}
add_action('pre_get_posts', 'my_private_posts_in_categories');

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程