【问题标题】:Access trashed Wordpress posts on the front-end在前端访问已删除的 Wordpress 帖子
【发布时间】:2015-09-20 15:39:19
【问题描述】:

我有这个脚本可以在前端列出所有带有永久链接的帖子标题,包括垃圾箱中的帖子:

<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 行为,但是否有允许查看垃圾帖子的功能?

提前致谢。

【问题讨论】:

  • 我很好奇您为什么要在前端显示已删除的帖子,如果您不介意详细说明,谢谢。

标签: wordpress frontend posts recycle-bin


【解决方案1】:

默认情况下,主查询只为所有用户显示已发布的帖子,为登录用户显示额外的私人帖子。所以我们可以使用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') );
    }
});

【讨论】:

  • 感谢@Pieter Goosen。它错误:Parse error: syntax error, unexpected 'function' (T_FUNCTION)
  • 抱歉,缺少逗号。固定的。请查看我的更新代码
  • 哇,好用!老实说,我不认为这在前端是可能的。干杯。奖励赏金 :-) 更新:当我尝试奖励赏金时,它显示“你可以在 21 小时内奖励你的赏金”。我会在 21 小时后回来:-)
  • 我的荣幸。您甚至可以扩展它并首先使用$status = $q-&gt;get( 'post_status' ); 获取post_status 的值,然后将垃圾添加到$status 的结果中,然后将其作为值添加到您的post_status 参数中;-)。享受
  • 太棒了。谢谢 ;-)。享受
猜你喜欢
  • 2019-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多