かわろぐ

ITビジネス、ガジェット、メディア、経済、子育て、遊び、飯とかなんでも配信していくよ。WordPress関連の記事はメモ感覚で書いてるので、乱文で失礼仕り候。ガジェ通とかにも記事提供してるので、よろしくね!

WordPressでカスタム投稿に設定したカスタムフィールドを検索対象にして、なおかつ絞り込み検索をする

LINEで送る
Pocket

wordpress

以前、Advanced Custom Fieldsで追加したカスタムフィールドが検索対象にならず、ハマって、諦めたことがあるんだ。原因はおそらくプラグインの競合とか、そんな感じだと思うんだけど。。。

あとは結構あちこち調べて回ったんだけど、情報が古くて、現在のWordPressのバージョンとかに対応しきれてない記事も多かった。

今回いろいろと試したら上手く検索対象に出来て、さらにタクソノミーなどの絞り込み検索もいいプラグインがあったのでメモ。(2015/07/28現在)

おそらくプラグインのバージョンによっても誤差がでると思う。なので現在の環境と使用するプラグインと、そのバージョンを明記しておくよ。
基本は以下の項目を順番にやっていけばOKのはず。
(↓をクリックするとその項目に飛びます)

 

WordPress 4.2.3

基本のWordPressです。
WordPressの公式サイト(https://ja.wordpress.org/releases/)で過去のバージョンもダウンロードできる。

 

Custom Post Type UI  1.1.1

 「カスタム投稿」や「カスタムタクソノミー」を可能にするプラグイン。とりあえずコレがないと始まらない。
WPやりだした時に「タクソノミーってなんだよ」って思ったんだよね。「カスタム投稿」ってのは「投稿」を独自に追加すること。「カスタムタクソノミー」ってのは「タグ」や「カテゴリー」を独自に追加すること。

「投稿2を作って、独自のタグを当てたい」って時に使ったりする。よくコーポレートサイトの構築とかである「News(新着情報)」とか「プレスリリース」、あとは「スタッフ紹介」とかでカスタム投稿を使うと便利。投稿(ブログ)にカテゴリ分けしてもいいんだけど、それだとブログの新着投稿一覧にNewsまで一緒に表示されてしまうので、これを分ける為に使うわけですね。

設定

  • 「Add New Post Type」でカスタム投稿を作ります
  • 「Post Type Slug」でスラッグ(英数字)を指定します
    ※他の固定ページに指定したスラッグなどと被らない様に注意
  • 「Plural Label」はサイドバーに表示される名前
  • 「Has Archive」を「True」に設定

テクニック

まず注意点としては、スラッグが被らないようにすることです。例えば固定ページで「staff」というスラッグのページがあるとして、同じ「staff」ってスラッグのカスタム投稿を作っちゃうとバッティングします。
個人的なスラッグ振りのテクニックとしては、固定ページは単数系の「staff」にしておいてカスタム投稿では複数系の「staffs」にすることが多いです。

//現在のページのスラッグを取得
$page = get_page(get_the_ID());
$slug = $page->post_name;

//これに対になるカスタム投稿のスラッグ
$custom_slug = $slug."s";

こんな風に、固定ページとカスタム投稿のスラッグを単数形と複数形で対にしておく自分ルールを作っておくと、すごく便利ですよ。Advanced Custom Fieldsの解説の箇所でもさらに説明します。

注意

あちこちのブログで「をTrueにすると検索に掛かるようになる」って説明してるところが、多いけど、それは間違い。
「このカスタム投稿を検索対象から外しますか?」という設定項目なので、検索対象にしたい場合は「False」が正しい。ただし、これだけだと実際引っかからないので注意。

 

 Advanced Custom Fields 4.4.2

ご存知みんな大好きACF。これはリファレンスがあちこちに転がってるので、使い方はそれを見てみればいいと思います。
WP初心者の為にプラグインの概要を説明すると、このプラグインは固定ページや、投稿、自分で作ったカスタム投稿にカスタムフィールドを追加したりできるようになるプラグイン。
Custom Post Type UIで投稿を作って、Advanced Custom Fieldsで投稿できる内容を追加したり削ったり出来る。

使い方の例(基本編)

  • 固定ページを作る(slugはstaff)
  • Custom Post Type UIで「スタッフ」というカスタム投稿を作る(slugはstaffs)
  • Advanced Custom Fieldsでカスタム投稿に独自の記入項目を追加する
    スラッグ名staffs「名前」(フィールド名name)「年齢」(フィールド名age)を追加

 

使い方の例(上級テクニック)

固定ページにphpでこんなのを追記

//現在のページのスラッグを取得
$page = get_page(get_the_ID());
$slug = $page->post_name;

//現在のページの対になるカスタム投稿のスラッグ
$custom_slug = $slug."s";

echo '
<ul id="slider" class="hbox">';
$wp_query = new WP_Query();
    $param = array(
        'posts_per_page' => '-1',
        'post_type' => $custom_slug,
        'post_status' => 'publish',
        'orderby' => 'ID',
        'order' => 'DESC'
    );
    $wp_query->query($param);
    if($wp_query->have_posts()): while($wp_query->have_posts()) : $wp_query->the_post();

    echo '<li>';
    echo '名前:';
    echo the_field('name');
    echo '<br />';
    echo '年齢:';
    echo the_field('age');
    echo '</li>';

endwhile; endif;
echo '</ul>';

こうすることで、どの固定ページに対しても似たようなコードで対応することができる。

 

Custom Post Type Permalinks 1.0.4

登録したカスタム投稿ごとにスラッグなどを変えられるプラグイン。ちゃんとアーカイブ表示できるなら別に入れなくてもいい。ただテーマによっては「カスタム投稿がアーカイブ表示(一覧表示)できない!」なんてことが発生することがあるので、これを入れておくと無難。

 

Search Everything 8.1.3

検索範囲をカスタム投稿まで広げるプラグイン。

 

Ultimate WP Query Search Filter

絞り込みなどの詳細検索を可能にするプラグイン。この手のプラグインは有料のものが多くて困ってたんだけど、このプラグインで事足りてしまった!俺自身、見つけたばかりのプラグインで、検索しても日本語のリファレンスがほとんど出てこないので、使ってる人もまだまだ少なそう。

プラグインの設定も英語だけど、ある程度WPのカスタム投稿やカスタムフィールドについて理解してる人であれば問題無いと思う。個人的にも手探りな状態なので別記事でまとめようと思います。

【記事書きました】Ultimate WP Query Search Filterで絞り込み検索をする

 

さいごに

とりあえず、これでなんとかカスタムフィールドの検索や絞り込み検索に対応することができました。この使い方ができるとWordPressの可能性がかなり広がりますね。
一応、今回、無事にカスタムフィールドの絞り込み詳細検索が動いたので現段階でのプラグインをzipに纏めて保管。
Download

 

 

LINEで送る
Pocket

-WordPress
-, , ,