レ点腫瘍学ノート

2021-06-19

jsonld.inc.phpの短縮URL対応

Top > pukiwikiカスタマイズ箇所 > 2021 > jsonld.inc.phpの短縮URL対応

pukiwikiのjsonld.inc.phpプラグインは簡単にpukiwikiにJSON-LDの構造化データを追加することができて重宝していましたが、短縮URLプラグインを使っているとパンくずリストのURLが正しく表示できず困っていましたので、ここに改変内容を記載しておきます。

jsonld.inc.phpと短縮URLについてはこちらのページをご覧ください。

SEO対策にどれほど貢献するのかは不明ですが、検索エンジンで当サイトで記事を書いているキーワードがあったときに表示されやすくなればと思い、pukiwikiカスタマイズ箇所/2020の一環としてJSON-LDへの対応を行いました。schema.orgの中ではJSON-LDが使いやすい JSON-LD以外にもschema.orgに対応
自作プラグイン/jsonld.inc.php - PukiWiki-official
https://pukiwiki.osdn.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3/jsonld.inc.php
PukiWikiのクソ長いURLをURL短縮ライブラリを組み込んで解決する!
PukiWikiだけの問題ではないが、一般的にWikiでは日本語ページのURLがクソ長くなり、特に各種SNSへ連動するときにネックになる。そこで、PukiWikiのURLを短縮する方法を検討し、実際にURL短縮ライブラリを作成して組み込んで解決したので、図入りで詳細に解説する。
https://dajya-ranger.com/pukiwiki/embed-url-shortener/

変更点

短縮URLに対応する

$thisPageUri = $script . (!$isHome ? '?' . str_replace('%2F', '/', urlencode($title)) : '');の下に次の行を追加します。38行目付近です。

$shorturl = get_short_url_from_pagename($title);

foreach ($names as $name) {}の中に、下記の2行を追加します。「$path .= (($path != )? '/' : ) . urlencode($name);」の次の行あたりで良いでしょう。85行目付近です。

$pathname .= (($pathname != '')? '/' : '') . $name;
$shorturl = get_short_url_from_pagename($pathname);

さらに各行を次のように書き換えます。

if (PLUGIN_JSONLD_ARTICLE) {}内(49行目付近)

'@id' => $thisPageUri //この行を削除
'@id' => $script . $shorturl //この行を追加

if (PLUGIN_JSONLD_BREADCRUMBLIST && !$isHome ) {}内(86行目付近)

'item' => $script . '?' . $path //この行を削除
'item' => $script . $shorturl //この行を追加

見栄えを良くする

見栄えを良くするためにJSONのオプションにJSON_PRETTY_PRINTも適用します。これで適宜改行が入って見やすくなります。

$jsonOption = JSON_UNESCAPED_UNICODE | JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT; 
$jsonOption = JSON_UNESCAPED_UNICODE | JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_PRETTY_PRINT;

また、リッチリザルトテストのサイトで「名前のないアイテム」とならないようにパンくずリストのJSON-LD内に下記の一行を加えていても良いと思います(SEO的には特に意味は無さそうですが)。92行目付近です。

'name' => 'BreadcrumbList'

ダウンロード

いずれもpukiwiki 1.5.3をベースとした2021.6.18時点のファイルで、その後アップデートされていることがありますのでご注意ください。

filejsonld.inc.php (今回改装後のプラグイン)
filejsonld_original.inc.php (オリジナルのプラグイン)

親要素のDIVボックス全体にリンク範囲を広げる方法(改良版)親要素全体をリンクのクリック範囲とするのはタイルデザインなどのウェブサイトでは多用する技術です。しかしタイルデザイン全体のどこをクリックしてもリンクにつながるようにするには一工夫が必要で、ネットを見てもいくつかの方法があるようです。方法1 当サイトで始めに使ってい