##この操作の意図
イベント公開サイトを作っています。
サイトの構成は
- Home
- News
- Event Schedule
- Media
- Biography
- About us
のような形です。
Biographyで直接記入するものもあるものの、
担当者が専任ではないため、できるだけ自動的に取得する仕組みを作ってあげたいと考えています。
2〜5ははカスタム投稿タイプを用いています。
##実現させたいこと
Event ScheduleやMediaのような過去のものをBiographyに一覧として表示させようと思っています。
最初プラグインでBiographyに移動させる方法も考えていましたが、これだと手間が増えてしまうため、
- Event(もしくはMedia掲載期間)の終了後、Post Expiratorで非公開にする
- 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に一覧として表示したいだけです。
イメージ
作業者から見た場合、
- Eventページと、Mediaページからは掲載期間が終了するとページから見えないようになる。
- 掲載期間が終了するとBiographyに記事が移動したように見える
実際は、前述した通り、BiographyにEventとMediaの非公開になった情報を一覧として強制的に表示する。
ただし、EventとMedia以外の情報もなきにしもあらずなので、Biographyでも更新可能としています。
##補足
https://teratail.com/questions/70629
全く別問題だと思っていたので、分けて考えていたのですが、
補足として、上記の方法で複数カスタム投稿タイプの年別アーカイブを実現しています。
回答者様がおっしゃる通り、カスタムフィールドで取得した日付でのソートをpre_get_postsで取得。
その流れで、post_statusで、公開、非公開を実現させたいという流れになります。
よろしくお願いいたします。
あなたの回答
tips
プレビュー