
投稿者ユーザーアーカイブテンプレートをカスタム投稿に対応させる
先日、WordPressのクライアント案件でカスタム投稿を投稿者アーカイブさせるご要望がありました。WordPressで投稿者アーカイブのテンプレートには「author.php」のファイルを使いますが、デフォルトでは通常の投稿タイプにしか対応していないようです。そこで少し改修を加える必要がありましたので、備忘録として残しておきたいと思います。
方法としてはシンプルに下記のコードをfunctions.phpに記述する形になります。それ以外は特に何も必要ありませんでした。
【functions.php】
function author_search_filter($query) {
if (is_author() && $query->is_main_query() ) {
$query->set( 'post_type', array( 'カスタム投稿タイプ' ) );
}
}
add_action( 'pre_get_posts','author_search_filter' );
上記ではアーカイブで出力される内容を設定しています。条件として投稿者アーカイブであることを指定し、クエリの対象を任意のカスタム投稿タイプに配列内に追加します。
ちなみに、複数のカスタム投稿タイプを指定することも可能ですし、通常投稿とカスタム投稿タイプを組み合わせることも可能です。いずれも投稿タイプのスラッグを配列内で指定していく形になります。使う場面は限定的ですが、覚えておくと便利な方法ですね!
(参考)
プラグイン API/アクションフック一覧/pre get postscategories
- WordPress(61)
- JavaScript(49)
- Vue.js(48)
- CSS(46)
- jQuery(34)
- Nuxt.js(22)
- Sass(21)
- Gulp(17)
- webpack(16)
- PHP(14)
- HTML(14)
- GSAP(11)
- React(10)
- Vite(9)
- Pug(9)
- Laravel(8)
- Cordova(8)
- Linux(7)
- Next.js(6)
- Apache(5)
- Shopify(4)
- REST API(4)
- Node.js(4)
- Smarty(3)
- Git(3)
- JSON(3)
- その他プログラミング(3)
- Google Apps API(3)
- Bootstrap(3)
- 環境構築・システム(3)
- TypeScript(2)
- EJS(2)
- RMS(2)
- Docker(2)
- Instagram API(2)
- Excel VBA(2)
- SVG(1)
- Dart(1)
- ECカートASP(1)
- Markdown(1)
- AMP(1)
- Nginx(1)
- XML(1)
- shellscript(1)
- Ruby(1)
- MySQL(1)