2017.09.15

【wordpress検索機能カスタマイズ】カスタム投稿タイプ・ユーザー情報を検索可能に!

こんにちは、ゾノ( @ozonosho )です。

昨日は僕が運営する無料相談サイト『ココトモ』の検索機能をカスタマイズしてメッチャ便利にしました。

具体的には、検索結果ページにブログのみならずカスタム投稿タイプやユーザー情報を抽出できるようにしました。

実際の実装画面

できればぜひ実際に『ココトモ』のサイトを開いて利用してみてください。

たとえばこの検索窓に「不登校」と入力して検索すると、(ココトモは相談サイトのため)キーワードにピッタリの相談相手や情報が見つかるようになっています。

検索結果

(相談メンバー)

(トピック)

このように、「相談メンバー」のタブには不登校に関連する相談メンバーが表示され、「トピック」のタブには不登校に関連する掲示板トピックが表示されます。

作った背景

ココトモはメンバー数も多く、ブログやトピックの数は数千もあるため、利用者さんからすると「情報が多くて嬉しい反面、自分に合った情報を探すのが大変」という問題がありました。

とはいえwordpressのデフォルトの検索機能では固定ページまたはブログの検索しかできないため、今回検索機能をカスタマイズしました。

search.phpをごにょごにょ

ココトモの場合は「トピック=カスタム投稿タイプ」「相談メンバー=ユーザー(+カスタムフィールド)」を利用して作られているため、検索対象にそのへんの情報も含まれるようにしました。

ユーザー情報はカスタムフィールドで拡張した項目を検索対象に含めたかったため、search.php内で検索対象となるユーザーのIDを格納する配列を作ってから表示しています。

//ユーザー情報のマスター取得
$userlist = get_users(array('who' => 'authors'));
$users = '';
foreach ($userlist as $user) {
	if(strpos($user->user_profile, $s) !== false) {
		$users[] = $user->ID;	
		continue;
	}
	if(strpos($user->user_soudan_key, $s) !== false) {
		$users[] = $user->ID;	
		continue;
	}
}

user_profileとかuser_soudan_keyがカスタムフィールドの値です。ユーザーに紐づけたカスタムフィールドはユーザーのオブジェクトデータから簡単に引き出せるのがありたいですね。

もし同じような機能を実装したい場合は、search.phpを↓に置いておくので参考にしてみてください。

[wpdm_package id=’1921′]

それでも分からなければ、web制作をご依頼くださいw

⇒ゾノの「web制作」ページはこちら