Search Meterが集計する検索キーワードをWebサイト上に表示する。空白文字対策もしてみる

WordPressのサイト内検索を解析してくれるプラグイン「Search Meter」には、集計したデータをWebサイトに表示するテンプレートタグが2つ用意されています。

テンプレートタグはsm_list_popular_searches()sm_list_recent_searches()です。両者とも「最近検索に引っ掛かったキーワードを5つ、リンク付きのリスト型で表示する」点は同じですが、前者のsm_list_popular_searches()はこれを人気順に並べて表示します。以下のようにテンプレートに貼り付けると、

リスト型で出力されます。

このテンプレートタグには3つ引数があって、第一引数、第二引数にはリスト型(ulタグ)を囲む前後のラッパー要素を指定、第三引数で検索ワードの表示数を指定できます。例えばこのように引数に渡すと、

出力結果はこうなります。第一、第二引数で渡したdivタグで囲まれ、第三引数で渡した数だけ表示されるようになりました。

sm_list_recent_searches()も引数は同様のようですね。

あと、もしSearch Meterを無効化、アンインストールした場合この関数が使えなくなりエラーが起きます。その時のために関数が定義済みか判定する関数を使って回避しておきます。

空白の検索結果が順位に含まれているとキーワードが空欄になる問題

と、ここまではプラグインの作者様の記事『Search Meter: a WordPress plugin « Semicolon』を参考にしました。しかし実際に使ってみて気になったのですが、WordPressの検索機能は空白でも検索結果を出せるためSearch Meterが集計してしまうんですね。例えば人気順に空白の検索が含まれていたらこんな風になります。

空白による検索が上位に食い込んでいるとリンクのテキストが空欄になってしまうんですね。これでは不格好になりますが、修正できるようなフックは関数に仕込まれていませんでした。なので、関数をコピーして少し修正し、名前を変えて使うことにしました。

修正した箇所は25~27行目で、検索ワードが空欄だった場合に表示しない処理をしています。関数名は「sm_list_popular_searches」に「my」を付けて「my_sm_list_popular_searches」としています。これをfunctions.phpに貼り付けて同じように使用できます。(Search Meterを無効化したい場合は先にこの関数を削除しておかないとエラーが起きるので注意です)


ただ、これでも少し問題があります。もし空白キーワードがあった場合、第三引数で指定した数から1個減った数でキーワードがリスト表示されてしまうんですね。でもこれ以上修正するとなると大変なのでこの点は妥協することにしました。

最終更新日:2014年12月27日

コメント

「何かそこ違うよ」「こうした方が良い」っていう部分があったら指摘して頂けると嬉しいです。

トラックバック

トラックバックは現在ありません。

Trackback: https://increment-log.com/search-meter-display/trackback/