質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.91%

年月アーカイブ一覧ページでpre_get_postsを利用してカスタム投稿タイプの非公開を含めたリストを作りたい

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 870
退会済みユーザー

退会済みユーザー

この操作の意図

イベント公開サイトを作っています。

サイトの構成は

  1. Home
  2. News
  3. Event Schedule
  4. Media
  5. Biography
  6. About us

のような形です。
Biographyで直接記入するものもあるものの、
担当者が専任ではないため、できるだけ自動的に取得する仕組みを作ってあげたいと考えています。
2〜5ははカスタム投稿タイプを用いています。

実現させたいこと

Event ScheduleやMediaのような過去のものをBiographyに一覧として表示させようと思っています。

最初プラグインでBiographyに移動させる方法も考えていましたが、これだと手間が増えてしまうため、

  1. Event(もしくはMedia掲載期間)の終了後、Post Expiratorで非公開にする
  2. Biographyで非公開にしたEvent(Media)情報を強制的に表示

としたいです。
すでに、アーカイブ一覧ページで別のカスタム投稿タイプの取得は完了していますが、pre_get_postsで公開と非公開を含めた条件にすると、最新1件しか表示されなくて困っています。

該当のソースコード

function myaction_archive_sortorder( $wp_query )
{
    if( is_admin() ){
        return $wp_query;
    }

    if( $wp_query->is_main_query() && $wp_query->is_archive() ){
        $wp_query->set( 'posts_per_page',-1 );
        $wp_query->set( 'meta_key', 'first_date' );
        $wp_query->set( 'orderby', 'meta_value' );
        $wp_query->set( 'order', 'ASC' );
        $wp_query->set( 'post_status', array('private','publish') );
    }
    return $wp_query;

}

add_action( 'pre_get_posts', 'myaction_archive_sortorder' );


色々と方法を考えたり、間違っていないかわからないので方法を教えていただけると幸いです。

追記

更新する人物

更新作業する人物に関してですが、別の仕事との兼任者で、Webに関しての抵抗感があります。
一つでも作業工数を減らしたいため非公開したEventページをBiographyに表示させたほうが、ハードルが低くなるため

あくまでイベントページです

会員制のページではなく、
前述していますが、カスタム投稿タイプのEvent Scheduleの中のイベント終了ページ(Post Expiratorで非公開にしたもの)とMediaの中の掲載終了したもの(Post Expiratorで非公開にしたもの)をBiographyに一覧として表示したいだけです。

イメージ

作業者から見た場合、

  1. Eventページと、Mediaページからは掲載期間が終了するとページから見えないようになる。
  2. 掲載期間が終了するとBiographyに記事が移動したように見える

実際は、前述した通り、BiographyにEventとMediaの非公開になった情報を一覧として強制的に表示する。
ただし、EventとMedia以外の情報もなきにしもあらずなので、Biographyでも更新可能としています。

補足

https://teratail.com/questions/70629
全く別問題だと思っていたので、分けて考えていたのですが、
補足として、上記の方法で複数カスタム投稿タイプの年別アーカイブを実現しています。

回答者様がおっしゃる通り、カスタムフィールドで取得した日付でのソートをpre_get_postsで取得。

その流れで、post_statusで、公開、非公開を実現させたいという流れになります。

よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • 退会済みユーザー

    退会済みユーザー

    2017/04/02 18:06

    文字にするというのは難しいなと思っているので、お気になさらず。 ただ、色々なイベント情報ページがあるので、私のイメージが正だとは思っていませんが、Biographyというのは、その企業だったりグループが「過去何をやっているか」という時系列であって、詳細(例えば料金だったり開催時間だったり)は不要だと考えられます。 なので、アーカイブ一覧として取得したいという意図になります。 kei344さんとやり取りをしていて、一点だけ関係性がないだろうと思っていたのですが、追記いたします。 こちらこそ、糸口を探していただいているのに、言い方が悪くてすみません。

    キャンセル

  • 8-0_nyan5

    2017/04/02 19:22

    ご希望の方法とは違う提案ですのでこちらに書いてみます。Post Expiratorを見てみると、カテゴリーを書き換えられるようなので、EventやMediaの期間が終了したら非公開にするのではなく、期間中はカテゴリーを公開、終了したら非公開などとしてカテゴリーによって各々のページで条件分岐し表示、非表示を切り換えてはどうでしょうか。

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2017/04/02 21:05

    回答いただきありがとうございます。最初それも考えていましたが、一つの手間でハードルが上がるためということと、カテゴリによっては出し分けをしたいので提案していただいたものだと厳しいと感じています。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.91%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • トップ
  • WordPressに関する質問
  • 年月アーカイブ一覧ページでpre_get_postsを利用してカスタム投稿タイプの非公開を含めたリストを作りたい