このたび、当ブログ「物を捨てきれないなりにミニマリスト目指す。」の記事下に表示している関連記事を大幅に自作カスタマイズしてみました。以下は、その解説です。
ソースコードも掲載しているので、wordpressユーザなら、そのまま流用することも可能です。
記事下の関連記事をカスタマイズした経緯
もともと記事下の関連記事には、STINGER5のデフォルト機能を使用
ブログ開設当初、一時期zenbackの関連記事機能のお世話になっていました。
が、関連記事抽出のアルゴリズムがいまいち気に入らなかったのと、関連記事の解析に若干タイムラグがあるのが気になり、以降はずっとSTINGER5標準の関連記事機能を使っていました。
▼関連記事
zenbackは死にコンテンツか?僕がzenbackを外した理由と低根拠な仮説 | 物を捨てきれないなりにミニマリスト目指す。
seminimalist.info
STINGER5のデフォルト機能では関連記事をランダムに表示
STINGER5において関連記事を出力する機能は、kanren.phpというファイルに切り出されています。ソースを読むと、どうも記事の参加カテゴリの中からランダムに既定件数表示しているようです。
個人的な不満点(改善要件)
STINGER5は非常によくできたwordpressテーマで重宝していますが、最近関連記事をもっとカスタマイズしたい気持ちが強まってきました。
記事下の関連記事を人気順に出したい
ランダムにカテゴリから記事を表示してくれるのは、記事の掘り起こしという意味で有用です。ただ、過去記事の中には、自分的にそんなに気に入っていない記事もあります(いわゆる、すべった記事)。そういう記事が関連記事欄に表示されると、こっぱずかしいです。
関連記事というのは、訪問者さんを次の記事に誘導するオススメ機能です。どうせならすべった記事よりも、小当たり、大当たりした記事を表示したいなと思いました。こっぱずかしい気持ちにならないで済むという意味でも有効です。
関連記事をカテゴリごとに小分け表示したい
どの記事が訪問者さんに刺さるかわからないので、関連記事は、ある程度件数を表示した方がいいと考えています。そのため、以前まで、当ブログでは、記事下にずらっと関連記事を10件くらい表示していました。
しかし、人はそんなに多くの情報を処理するようにはできていません。10記事をただずらっと表示しただけでは、情報量が多すぎます。多分、眺めるとしても記事一覧の一番上から数記事くらいで、残りの一覧はただの背景になってしまっているんじゃないかなという懸念がありました。
読まれていないなら、それはデッドスペースです。デッドスペースは改善の余地があります。
というわけで、カテゴリごとに記事を小出しにしてみてはどうかと思いました。
↑イメージ図
なら自分で作ればいいじゃない⇒自分で作りました
現状の機能に満足できない部分があるなら、自分で作ればいい。というわけで、関連記事カスタマイズ機能を自作してみました。
気になる機能
色々検討してみましたが、サイドバーの人気記事一覧の表示に使っているwordpress poular postsプラグインを流用するのが一番手っ取り早いという結論に至りました。このプラグインの関数を、記事下で直接呼び出します。
できた関連記事がこちら
早速ですが、完成した関連記事機能がこちらです。
上記ソースコードでSTINGER5のkanren.phpを置きかえれば動作するかと思います。
無保証ですので、使用する場合はkanren.phpのバックアップをオススメします。また、このソースコードはwordpress popular postsプラグインの導入を前提としていますので、ご注意ください。
参加カテゴリから2~3記事くらい人気記事を表示
その記事が属するカテゴリごとに各2~3個くらいリアルタイムな人気記事を表示させます。「2~3個くらい」と幅があるのは、カテゴリ数に応じてよろしく調節してくれるようにしてあるからです。
カテゴリの表示順はランダム
毎回同じ表示だとつまらないので、カテゴリの表示順はランダムに入れ替えています。
他カテゴリで既出の記事は除外する
人気記事がかぶった場合は違う記事を表示してくれる
たとえば、記事の所属カテゴリが「ミニマリスト」「断捨離」だった場合、それぞれのカテゴリの人気記事を表示しますが、この二つのカテゴリは親和性があるため、人気記事がかぶる可能性があります。
せっかくカテゴリごとに人気記事を集計しているのに、引っ掛る記事が似たり寄ったりでは、つまりません。そのため、既に別のカテゴリの人気記事として表示されている記事は、以降のカテゴリの人気記事集計から除外しています。
「ミニマリスト」「断捨離」の順で表示されれば、先に「ミニマリスト」で表示された記事は「断捨離」の集計対象から外します。「断捨離」「ミニマリスト」の順で表示されれば、先に「断捨離」で表示された記事は「ミニマリスト」の集計対象から外します。
要約すると、よろしく違う記事を表示してくれるということです。
ただし、サムネがない記事は除外されない
(ちょっと技術的な話)
wordpress popular postsは、関数に記事IDをパラメータで渡すことで、その記事を集計から除外することができます。ですが、一方で、関数の戻り値として返ってくるpost_htmlで指定したstringに直接記事IDを指定することはできません。
そこで、上記のソースコードではサムネの画像名から記事IDを無理矢理パースして拾っています。そのため、既出記事の除外機能は、記事自体にサムネが設定されていることが前提となります。(試していませんが、サムネがなくても除外機能が動かないだけで、関連記事は表示されるハズです)
カテゴリに記事がない場合は、表示を省略する
記事の除外機能の兼ね合いや、カテゴリにそもそも記事がない場合、一件も記事が取得できない場合があります。そういう時、wordpress popular postsは「Sorry. No data so far」というメッセージを返しますが、せっかくの関連記事表示がNO DATAでは肩すかしです。
なので、そういった場合は、NO DATA自体表示しないようにしてみました。
記事数が足りない場合は、参加していないカテゴリからランダムに表示
カテゴリに所属する記事があまりに少なく、表示する人気記事が足りない場合は、ランダムなカテゴリからよろしく人気記事を表示します。
まとめ
カスタマイズが自由自在なのは、wordpressの強み
プラグインを気軽に適用したり、自分でphpを書いたり、カスタマイズが自由自在なのがwordpressのメリットかなあと思います。
最近、僕のまわりではてなブログに移動するかたをちらほら見かけますが、はてなでもこのくらいカスタムすることができたりするのでしょうか? ちょっと気になるところです。
カテゴリごとの人気記事は多分アクセスアップにも有用
今回の機能改善はどちらかというと僕の趣味で実施しましたが、関連記事の利便性を上げることはアクセスアップにも繋がるのかなと思っています。
事実、この関連記事カスタマイズを実施してから、当ブログの直帰率は50%台をキープしています。(まだ実装して数日なので、今後どうなるかはわかりませんが)
関連記事のカスタム表示、オススメです。
反応・感想・リクエスト等お待ちしております。
1件のコメント