WordPress公式ディレクトリで公開中の、リンク先をリンクカード形式で表示させる「Pz-LinkCard」の修正予定一覧です。
Pz-LinkCardってなんだ?
WordPressで記事を書くときに紹介したいサイト、参考にしたサイトを最初は文字だけのテキストリンクでリンクを張ったりすると思います。
それではちょっと味気ないなと考えるとサムネイルサービスとか、ブックマークレットを使用したり、はてなブログカードのiframe記述を試してみたりすると思います。
あまり複雑な記述をしてしまうと、後々サービス終了などに伴ってリンクが全滅してしまうので、簡単なショートコードを記述するだけでリンク先をリンクカード形式(ブログカード形式)で表示させるWordPressプラグインが「Pz-LinkCard」です。
読みは「ピーズィーリンクカード」とか「ピーゼットリンクカード」とか「ぽぽづれリンクカード」とか「はてなブログカードっぽいやつ」とか、適当な呼び方で良いと思います。
記事中に、
といった感じで「 https://popozure.info/xxx
「url=」(ユー・アール・エル・イコール)は、「URL=」と大文字でもかまいませんが、半角文字で記述してください。
そうすると、こんな感じで表示されます。
初期状態では敢えて青色と茶色の目立つ感じの色になっていますが、サイトの雰囲気によってカードの外観も設定画面から変更できます。
詳しい使用方法などは上記のPz-LinkCardのページをご覧ください。
修正予定一覧
自分で思いついたやりたいことや、いただいた要望などを、まとめていなかったりしたので、なかなか時間が取れなかったりしている内に忘れてしまったり…。
というわけで、過去記事やツイートから修正したい内容を拾ってみました。
内部キャッシュの更新
記事を書いたときの状態を残したいため、最初にリンク先の記事を取得したら、プラグイン側から敢えて更新は行っていません。
リンク先が 404 Not Found になったとしても、「○○というタイトルで○○という記事内容のサイトを参考にした」というリンクカードは記事の一部と考えているためです。
場合によってはリンク先の内容を反映したいと考える方もいると思うので自動更新の機能も検討したいです。
ステータスが200(正常)だとしても開いてみると「見つかりません」のページだったりする場合でも更新されてしまったり、ドメインが別の方に移譲されていたときに別の内容のサイト(例えば成人向けサイト)に入れ替わってしまったときにも内容が反映されてしまうデメリットがあります。
リンク切れのチェック
記事内のリンク切れをチェックする「Link Broken Checker」というプラグインを使っている方は多いと思います。
ショートコード内のURLは記事中の文字と同じ扱いなので、BLCではリンク切れのチェックがされません。
定期的にリンク先へアクセスしてステータスが変更されたときに管理画面で気付ける機能の実装を考えています。(管理画面への表示もしくは指定アドレスへメール。)
具体的にはWP-CRONで巡回して、最終取得時のステータスと違っていたらメッセージを表示して、「以後ステータスが変わるまで無視」を選んだらステータスを上書きする感じです。
この仕様であればクローラーからは404に見えるサイトでも毎回表示されないはずです。
現在、下地は作っていますが、実装はもうちょっと先になりそうです。
2015年12月に三十路くん(@misoji_13)さんからご要望いただいています。ありがとうございます。ぼくも欲しいです、この機能。
内部リンクのキャッシュの仕方
外部リンクと内部リンクは取得時にURLが自サイトのものかどうかで判断しています。
内部リンクの場合は必ずWordPress関数から記事IDを取得してタイトルと記事内容を取得していますが、記事以外のページ(カテゴリ、アーカイブ、タグ一覧など)やマルチサイト設定をしている場合、記事IDが取得できず、サイト名とサイト説明を表示する仕様になっています。
記事IDが取得できない場合には外部リンクと同じ動きをすることで上記の問題が解決されます。
池田佳紀(@subten_ikeda)さんと話しているときに内部リンクの取得に失敗した時に外部リンクと同様に記事取得するアイディアが浮かびました。ありがとうございます。
フォルソク(@forusoku)さんの報告により、マルチサイトで上手く取得できないことが分かりました。ありがとうございます。
画像ぺたぺた機能
自分で細かい設定をしなくても、ある程度の見てくれを設定してくれる「定型書式」という機能があります。
特に「セロハンテープ シリーズ」は好評なようです。
「セロハンテープ以外にも自分の好きなキャラクターの画像を貼りたい」というお話しがあったため、「シール」のように画像をひとつ「ペタリ」と貼れる機能を実装予定です。
具体的にはリンクカード全体にかかっているBefore要素あたりに画像と位置を指定する感じです。(セロハンテープを表示させているのと同じような仕組み。)
ただし、画像ファイルを作成する技術は無いので、画像(透過PNGとかが望ましい)は自分で用意していただく必要があります。
(複数貼れると楽しそうですが、1つになりそうです。ぼくの技術的に。)
おかえりなさい(@okaerinasainet)さんから「宝石をちりばめたい」というお話しがありました。ありがとうございます。
「好きな画像を貼りたい」というお話しはりお(@cgrio0822)さんからいただきました。ありがとうございます。
【済】ツイート数の更新
これはぼくが自分でずっとやりたかったのですが、サボってました。
URLから検索した数字を取得してキャッシュする方法も考えていたのですが、ディジティ・ミニミ社のcount.jsoonが浸透してきたと思うので、そちらを使用することにしました。
count.jsoonに登録しているサイトしかカウントは取れませんが、Twitter社のAPIが使用できなくなってすぐ名乗り出た無償APIなので登録数もけっこう多いと思われます。
次回公開する「Ver1.6.9」で対応予定です。
スマートフォン対応
サムネイルが 横100px × 縦100px で固定だったので、狭い画面だとタイトルや記事内容がほとんど表示されない状態でした。
Ver1.6.6にて横幅に合わせてサムネイルを縮小する機能を実装しました。
今後、特定の幅以下の場合にサムネイルサイズ、タイトル、記事内容のフォントサイズを1~2段階程度設定できるようにしたいです。
【済】サイトアイコンが表示されない
WordPress4.3からサイトアイコン(ファビコン)が設定できるようになりました。
「外観」→「カスタマイズ」→「サイト基本情報」からサイトアイコンを設定できるのですが、昔からのサイトだとプラグインやテーマで用意された機能でサイトアイコンを設定しているため、WordPress関数だとうまく取得できず、小さな四角で表示されてしまうサイトが多く見られました。
このため、サイト基本情報からサイトアイコンから設定されている場合のみ内部取得するように修正します。
次回公開する「Ver1.6.9」で対応予定です。
OGP画像の取得
現在、サムネイルはウェブ画面作成API(キャプチャAPI)に頼っています。
OGP画像が設定されている場合はそちらを取得したいです。
ただし、毎回リンク先サイトから画像を取得していると負荷をかけてしまうため、キャッシュする仕組みも考えないといけません。
取得画像キャッシュのプラグインを別に作成して、連携するのが最良と考えています。
リンク先サイトの画像を取得してキャッシュ(一時保管)することに関しては著作権的に考えるところはありますが、100px × 100px程度に小さくしてサムネイルの状態にすることでダウンローダーとは別の物と判断できるものにしたいです。
リンク先のファイルを取得して保存して、それを表示するのはぜい弱性を作りこみやすいと思っているので、実現は先となりそうです。
(OGP画像を取得して、取得できなかったらサムネイルAPIにアクセスするようなプラグインとかありませんでしょうか?)
設定画面のレイアウト
「一画面で縦にだらーっと長い設定画面」と、「タブで細かく分かれていて分類を探すところから始める設定画面」と、賛否両論なところだと思います。
今のところ「一画面で縦にだらーっと長い設定画面」なので、もう少しどうにかしたいところです。
このまま一画面形式だとしても、あまりいじらない方が良い設定項目は「▼」をクリックしてから展開するようにしたいです。
モバイル画面のときにサイズを変えるような設定を作ることはできるのですが、設定画面にどういうふうに組み込むと分かりやすいのか非常に悩んでいます。
今はテーブルで「リンクカード」の形を思い浮かべながら設定できるので、自分では気に入っているのですが、幅が狭いとレイアウトが崩れます。
せめて「スマートフォンやタブレットでも設定しやすい設定画面」にしたいと思っています。
管理画面のレイアウト
管理画面は作りこむ実力が無いので、WordPress管理画面からパーツを引用しています。
スクリプトもWordPressのものをそのまま使っているので、今は上手く動いているようでも、いつ動かなくなるか分かりません。
また、画面幅が狭いときに表示が崩れてしまうので、せめてスマートフォンやタブレットでもキャッシュ更新や編集が行えるレイアウトを考えたいと思っています。
文字列検索機能も欲しいですけど…。
(どなたかが実装していただいて、逆輸入させていただくと嬉しいですΣ(゚ロ゚)o゙(←オイ!))
スパゲッティを直したい
WordPressのプラグインとしても練習作。
そもそもPHPも知らないので作りながら覚えた感じです。
そのため、PHPやWordPressプラグインのルールがよく分からないまま作っていた部分もあります。(警告エラーが出ていて、バージョンアップ時に修正していったものもあります。)
もうちょっと理解が深まったら綺麗に作り直したいです。
作り直すとバグも実装されることが多いのが悩みの種です。
まとめ
今のところ拾えているのはこんなところでしょうか。
要望とか気づいた点などあれば、どこかの記事にコメントしていただくか、ツイッター(@popozure)で教えていただければありがたいです。
個人開発のため、動きは悪いかも知れませんが、対応すればするほどぼくのスキルが上がるので、要望とかだけは好き勝手に言っていただけると助かります。
では、この辺で。(^-^)o
コメント
お世話になります。
個人的にカスタマイズして使わせてもらっています。
カスタマイズの内容ですが、ドメインだけの場合は最後にスラッシュがあってもなくても同じだと思うので、末尾にスラッシュがあれば削除するようにしています。
URLがドメインだけの場合に最後にスラッシュがある場合(例: https://tamulab.jp/)、ない場合(例: https://tamulab.jp)があるとそれぞれのURLでキャッシュが保存されるようです。
変更差分をお送りできますので、もしよろしければカスタマイズの内容を取り込んでみていただけますでしょうか?
とおるさん、ご利用&コメントありがとうございます。
「最後のスラッシュ」について、プログラムでは判断していないので記述が違っている場合にはお察しのとおり別サイトとしてキャッシュが作成されます。
ドメイン名のみの場合にはスラッシュの有無で解釈が変わるサイトはほとんど無いと思うので「ドメイン名のみの場合には最後のスラッシュを無視する」といったような設定を設けたいと思います。(デフォルトは「無視する」。)
変更案としていただけると非常に助かりますのでいただきたいと思います。
あとは…どうやって受け取りましょうか…!Σ(゚ロ゚)o゙(簡単な正規表現とかであればコメントかDMでもOKですっ!)