リンク先の情報を表示するlink-cardプラグイン[自作WordPressプラグイン]

※この記事は丸太式 Advent Calendarの21日目です

今日はWordPressプラグインを作りましたのでご紹介します。

link-cardプラグイン

基本情報

  • 名前
    link-card
  • 概要
    aタグにcreateCardクラス属性を付加しておくと、aタグの直前にカード状の情報ボックスを表示します。
  • 動作確認バージョン
    WordPress 4.1で動作確認しています。

使い方

プラグインをインストール

今のところ、GitHubでのみ配布しています。
https://github.com/bis5/link-card
「Download Zip」からZipをダウンロードして、wp-content/plugins/link-cardとして配置してください。
※GitHubからダウンロードしたZipファイルを展開すると「link-card-master」というディレクトリになりますが、「-master」は除いてください。

記事を作るとき

リンクを作成するとき、以下のようにclass属性を追加します。

<a class="createCard" href="http://www.yahoo.co.jp">やふー!</a>

すると、記事を表示した際に、リンクのすぐ上にリンク先の情報が表示されます。
こんな感じです。
この時表示されるのは、titleタグの内容とmetaタグのdescriptionの内容です。

既知のバグ

  • リンク先のdescriptionに日本語が含まれると文字化けする
    文字化けする例
  • descriptionを設定していないサイトではタイトルしか表示されない
    代わりにog:descriptionとか使うと多分いい感じ
  • (バグと言うより仕様ですが)WordPressのサーバからリンク先に都度アクセスするので、最悪アクセス遮断されかねない
    キャッシュするべきですね。。。

久しぶりにちゃんと成果が出た週末で、自分としては満足です。
もちろんこれから先も改修を続けるつもりなので、フィードバックやプルリクお待ちしています。

[XOOPS Cube] Protectorモジュールに初Pull Requestした話

XOOPS Cubeの定番モジュールである「Protector」に、これまた定番のALTSYSがインストールされていないときにメニューの「一般設定」リンクがXOOPS2のSystemモジュールを指してしまうバグを見つけたので、修正してPull Request、すぐにマージされました。
管理メニューのリンクは正しく生成されているので、管理メニューから移動している限り見つけにくいバグです。

コードについてはhttps://github.com/xoopscube/protector/pull/3をご覧ください。

発生条件

ALTSYSがインストールされていないという1点だけです。
ALTSYSがインストールされている場合、Protector自身のadmin/index.phpを指すようにリンクが生成されます。
しかしALTSYSがインストールされていない場合、Systemモジュールのadmin.phpを指すリンクとなります。
Protector自身はALTSYSのインストールが必須ではないので、これではXOOPS CubeでALTSYSを使わずにProtectorを使いにくくなってしまいます。

修正

ALTSYSの有無を判定している部分で、ALTSYSがインストールされていない場合にlegacyモジュールの有無を判定し、インストールされていればlegacy/admin/index.phpを指すリンクを生成するようにしました。

蛇足

今回Pull Requestを出したのはXOOPS Cubeのリポジトリでしたが、よく見たらXoopsXのProtectorにも同様のバグがありました。
XoopsXは確かALTSYSが必須になっていたような気がするので、ほとんど気づけないですね。
最近のXOOPS Cubeコミュニティは、XoopsXとXOOPS Cubeで別のリポジトリを持ってしまっているせいで外から構造がよくわからなくなっている気がします。


Image By: Barbara DieuCC BY-NC-SA 2.0