WP Social Bookmarking Lightを使って記事ページ以外にもソーシャルボタンを表示したい。

WP Social Bookmarking Lightというプラグインがあり、割と簡単にソーシャル系のアイコンを配置することができます。プラグインをインストールして有効化し、表示場所を選んで、表示するアイコンを選べば完了。簡単です。

このプラグイン、表示アイコンにmixiも選べるのですが、隣に座っているWPプラグイン関連に詳しい髭の人に聞いたところ、それは割と珍しい、とのこと。なかなかいいんじゃないでしょうか。※デベロッパー登録は必要なようですが。

さてこのプラグイン。設定画面からは、表示するテンプレートを選べないのですが。どうも表示されないテンプレがあるっぽい。というより、特定のテンプレでthe_contentを使ってるところに強引にボタン表示のHTMLソースをねじ込む形で動作してるよう。

例えばcategory.phpでthe_contentを表示してるコンテンツなんかに、このプラグインでボタンを配置したりはデフォだとできないです。そういう状況がどれほどあるのかはまあ置いといて、さて困った。実際にとあるテンプレがそういう仕様になっていて、そこに配置するような指示を受けたのです。神から。三波春夫的意味での神から。

それなら、プラグインのソース中でテンプレを選んでる部分を探して、任意のテンプレが表示の対象に入るようにしちゃえばいいじゃない、なんて軽いノリでググってみたら、本来表示されないはずのトップページに表示する方法を書いてくれているところを見つけました。

WP Social Bookmarking Light をトップにも表示

上記のサイトではトップに表示ですが、その条件をカテゴリテンプレに応用してしまえば動くのではないか、なんて思いまして、以下のように書き換えてみました。

wp-social-bookmarking-light.php中の582行目。

if( $options['single_page'] && !is_singular() && !is_category() ){

前述のサイトではこの記述の末尾に!is_home()と付け加えることでトップヘの表示を実現していました。それならば、カテゴリに表示したい場合は!is_category()を付け加えればいいのではないか。はい、いつもの如く7割程度は勘なのですが、やってみました。

で、まんまとうまくいきましたよ。なんてことだ。

でも「!」という演算子は「~ではない」なので、「カテゴリではない場合」に、という条件を加えたということのように思うのですが、なぜこれでカテゴリの場合にも表示されるようになるか、もう少し突っ込んでかんがえててみました。

少しコードを追ってみたところ、上述の箇所はソーシャルボタンを表示せずに処理を終了する役割を担っている部分のようです。ここで表示させない条件をひと通りチェックし、それらのチェックをくぐりぬけた場合にだけ、ソーシャルボタンを貼り付けるソースが値として返されるよう。

なので、そもそもの記述だとカテゴリの場合にはボタンを表示しない処理が動いてしまうのです。だから、そのページがカテゴリである場合にはその処理を回避するように、条件として「カテゴリでない」をここに入れることになるのです。

分かりづらい・・・ですが。

ともかく、分岐の条件づけが理解できたので、今後このプラグインを使うことがあれば、自由に条件をコントロールできそうです。