スポンサーリンク

【WordPress】ホーム画面と検索結果の一覧にカスタム投稿タイプを含める方法

アイキャッチ WordPress

WordPressで、ホーム画面と検索結果の一覧にカスタム投稿タイプを含める方法です。

カスタム投稿タイプの利用方法はさまざま考えられますが、通常の投稿(Post)などと同じような扱いで投稿と一緒にトップページや検索結果に表示する場合はpre_get_postsアクションフックを使用することでシンプルに実現できます。

サンプルコード:ホーム画面と検索結果の一覧にカスタム投稿タイプを含める

以下のコードをfunctions.phpなどに張り付けて使用してください。

コード内の「(カスタム投稿タイプのスラッグ)」部分は各自のサイトで利用している内容に書き換える必要があります。

// ホーム画面と検索結果一覧にカスタム投稿タイプを含める
function main_query_filter($query) {
    if (!is_admin() && $query->is_main_query()) { // 管理画面以外のメインクエリか?
        if ($query->is_search() || $query->is_home()) { // ホーム画面、もしくは検索結果一覧か?
            // クエリの投稿タイプにカスタム投稿タイプを追加する
            $query->set('post_type', array('post', '(カスタム投稿タイプのスラッグ)'));
        }
    }
}
add_action( 'pre_get_posts','main_query_filter' );

カスタマイズ:ホーム画面や検索結果一覧以外に表示する画面を変更する

上記のサンプルコードでは「ホーム画面」もしくは「検索結果一覧」に表示されるように判定しています。この判定にはメインクエリで使用しているWP Queryクラスがもつ「is_*」プロパティを利用します。(サンプルコードでは$queryで渡されたインスタンス)

is_search()プロパティで検索結果一覧の判定、is_home()でホーム画面の判定を行っていますが、その他のプロパティなどを使うことでカテゴリアーカイブやタグアーカイブでのみ表示するようにもできます。

if ($query->is_search() || $query->is_category() || $query->is_tag()) {
    $query->set('post_type', array('post', '(カスタム投稿タイプのスラッグ)'));
}

などとすると、検索結果とカテゴリアーカイブ、タグアーカイブのいずれかでカスタム投稿タイプを表示するようにできます。is_category()プロパティがカテゴリアーカイブの判定、is_tag()プロパティがタグアーカイブの判定です。

カスタマイズ:表示するカスタム投稿タイプを複数指定する

また、set()メソッドの第2引数は投稿タイプを列挙する配列になっていますので、複数のカスタム投稿タイプを含めたい場合は以下のようにカンマ区切りで複数記述すればOKです。

if ($query->is_search) {
    $query->set('post_type', array('post', '(スラッグA)', '(スラッグB)', '(スラッグC)'));
}

WordPress&Cocoonのお悩みにお答えします

クラベルではWordPressのブログサイト構築、Cocoonテーマの導入やカスタマイズに関するご相談を承っております。

お困りの方はぜひ一度お問い合わせください。また、現在ココナラをつかったサービス出品も始めてみました。お悩みおひとつの解決からお手軽にお申込みできますので、こちらもぜひあわせてご覧ください。

最短当日★ワードプレスの疑問質問トラブル解決します ご相談無料!初心者歓迎!優しく丁寧、徹底的にサポートします!
Cocoonテーマサイト構築&カスタマイズします ご相談無料★公式サポート対象外もOK!プログラミングはお任せ
WordPressWeb開発
この記事は良かったですか?
最新情報をお届けします。
クラベル(Cravel)をフォローする
スポンサーリンク
この記事を書いた人
クラベル(Cravel)

Webサイト構築、Wordpressのカスタマイズやphpプログラミングなどやってます。BPM(ビジネスプロセス管理)、BPR(業務改革)コンサルなどにも従事。世の中すべてピタゴラ装置をモットーに自動化します。ブログは省エネ運営中。Cocoonカスタマイズやゲーム、ガジェットの話題など。

プロフィール詳細、お仕事のご依頼はこちら

クラベル(Cravel)をフォローする
クラベル

コメント

タイトルとURLをコピーしました