2

フロントエンドで、ゴミ箱にある投稿を含むパーマリンク付きのすべての投稿タイトルを一覧表示するこのスクリプトがあります。

<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のデフォルトの動作であることは理解していますが、おそらくゴミ箱の投稿を表示できる機能はありますか?

前もって感謝します。

4

1 に答える 1

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') );
    }
});
于 2015-07-21T08:06:09.830 に答える