在前端访问已删除的Wordpress帖子

时间:2015-07-02 22:54:16

标签: wordpress frontend posts recycle-bin

我已经使用此脚本列出所有帖子标题,包括永久链接,包括前端垃圾箱中的帖子:

<ul>
<?php
$myposts = get_posts(array(
    'numberposts' => -1,
    'offset' => 0,
    'category' => $cat_id,
    'post_status' => array('publish','trash')  
    )
);
foreach($myposts as $post) :
setup_postdata($post);
?>

    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>

<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
</ul>

这很好用。但问题是,如果我点击“垃圾箱”中的任何帖子标题,我会收到404页面。

如何访问前端的已删除帖子?我理解这是Wordpress的默认行为,但是是否有一个允许查看垃圾邮件的功能?

提前致谢。

1 个答案:

答案 0 :(得分:4)

默认情况下,所有用户的主查询仅显示已发布的帖子,登录用户只显示其他私人帖子。因此,我们可以使用pre_get_posts挂钩向主查询添加其他帖子状态

这是完全未经测试的,不确定它是否可行,但您可以尝试以下

add_action( 'pre_get_posts', function ( $q )
{
    if (    $q->is_main_query()
         && $q->is_single() // can replace with $q->is_singular()
    ) {
        $q->set( 'post_status', array('publish','trash') );
    }
});