【WordPress】カスタム投稿の一覧ページでのみ処理を行う方法

WordPress では、特定のカスタム投稿タイプの一覧ページ(アーカイブページ)でのみ処理を実行したい場合があります。例えば、特定のカスタム投稿タイプの一覧表示をカスタマイズしたり、専用のスタイルやスクリプトを追加したい場合です。本記事では、カスタム投稿の一覧ページでのみ処理を行う方法を詳しく解説します。

is_post_type_archive() 関数を使用して条件分岐を行う

カスタム投稿の一覧ページかどうかを判別するためには、is_post_type_archive() 関数を使用します。この関数は、指定したカスタム投稿タイプのアーカイブページであれば true を返し、それ以外の場合は false を返します。

if ( is_post_type_archive('your_custom_post_type') ) {
    // カスタム投稿の一覧ページでのみ実行する処理
}

ここで、your_custom_post_type はカスタム投稿タイプのスラッグに置き換えます。このコードを使用することで、特定のカスタム投稿タイプの一覧ページでのみ特定の処理を実行することができます。

pre_get_posts フックを使ってクエリをカスタマイズする

カスタム投稿の一覧ページに表示される投稿をカスタマイズしたい場合は、pre_get_posts フックを使用します。このフックは、メインクエリが実行される前にクエリを変更することができます。

function modify_custom_post_type_query( $query ) {
    if ( is_post_type_archive('your_custom_post_type') && $query->is_main_query() ) {
        // クエリに条件を追加する処理
        $query->set( 'posts_per_page', 10 ); // 例えば、1ページに表示する投稿数を10に設定
    }
}
add_action( 'pre_get_posts', 'modify_custom_post_type_query' );

このコードを利用することで、特定のカスタム投稿タイプの一覧ページにおいて、表示する投稿数や並び順などのクエリパラメータを簡単に変更することができます。

テンプレートファイル内での利用

テンプレートファイル内でカスタム投稿の一覧ページに特化した処理を行う場合も、is_post_type_archive() 関数を利用します。例えば、一覧ページに特定のメッセージを表示したい場合、以下のように記述します。

if ( is_post_type_archive('your_custom_post_type') ) {
    // テンプレート内で特定の処理を行う
    echo 'カスタム投稿の一覧ページです。';
}

これにより、指定したカスタム投稿タイプの一覧ページでのみメッセージや特定のコンテンツを表示することができます。

まとめ

WordPress でカスタム投稿タイプの一覧ページでのみ処理を行う方法を紹介しました。is_post_type_archive() 関数を利用した条件分岐、pre_get_posts フックによるクエリのカスタマイズ、そしてテンプレートファイル内での処理の実行方法を理解することで、より柔軟なカスタマイズが可能になります。カスタム投稿の一覧ページをより効果的に活用するために、これらのテクニックをぜひ試してみてください。