ログインしてる状態でも「非公開:」の記事が表示されないようする。

WordPressの仕様なのですが、管理者としてログインしたまま記事の一覧を見ると、非公開の記事が 「非公開:」というテキストがついてそのまま表示されてしまいます。
個人的には「下書きわかりやすい仕様だと思うのですが、中には「非公開なのに表示されてる!」とビックリしちゃう人がいますので、ログインしても非公開は表示しないという風にしてみようと思います。

ヒントをいただいたのは、この記事。
http://d.hatena.ne.jp/deeeki/20090917/wp_publish_only
ありがとうございます。

基本的には上記でOKだったのですが幾つか修正がありました。

is_site_admin() がエラー
この関数は新しいWordPressでは使えないようです。替りに is_super_admin() を使います。
「下書き」や「非公開」のプレビューが見れなくなってしまう。
考えてみれば当たり前なのですが、「公開」の記事しか表示されないようにしていますから、「下書き」や「非公開」の記事をプレビューしようとすると「ページが見つかりません」となってしまいます。
でも考えて見ると、非公開と出るのが困るのは「一覧」状態ですし、プレビューは「シングルページ(投稿や固定ページ)」で行います。なので、is_singular() で判定して、シングルページではないときだけ、非公開とかを表示しない。という設定にしてみました。

そこで、上記のスニペットを改造させていただき、一覧表示のときに「非公開」の記事は表示されなくなるが、「下書き」や「非公開」のプレビューはできる。というコードを書いてみました。

function parse_query_ex() {
    if (!is_super_admin() && !get_query_var('post_status') && !is_singular()) {
        set_query_var('post_status', 'publish');
    }
}
add_action('parse_query', 'parse_query_ex');

こんな感じです。

  • シングルページのサイドバーとかに記事一覧だしているときとかは非公開が出ちゃうかも。
  • 固定ページをカスタマイズして記事一覧だしてたりするときも出ちゃうかも。

【感謝】
この記事を書くにあたって、下記サイトの記事に大変お世話になりました。
http://d.hatena.ne.jp/deeeki/20090917/wp_publish_only
有り難うございます。m(_ _)m

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です