ブログカードで日本語URLを日本語で表示する方法

Pz-LinkCard プラグインのブログカードでは、日本語を含むURLは日本語で表示されない。

urlencode された読解不可能な長い文字列になる。

 

 

 

このブログカードの下部の引用先アドレスURLの部分。

 

例えば、

  • https://makotoiwasaki.com/ドリアン農園.html

 

と表示されてほしいのに、

 

  •  https://makotoiwasaki.com/2019/07/

    %e3%83%89%e3%83%aa%e3%82%a2%e3%83%b3%e8%be%b2%e5%9c%92.html

 

と表示されてしまう。 

どちらが良いかは日本人なら一目瞭然である。

 

そして、記事作成編集時に、

 

*<p>https://makotoiwasaki.com/ドリアン農園.html</p>

と日本語が含まれるURLは、ブログカードに変換する対象から除外されている。

常にエンコードされた、

*<p>https://makotoiwasaki.com/2019/07/

%e3%83%89%e3%83%aa%e3%82%a2%e3%83%b3%e8%be%b2%e5%9c%92.html

</p>

 

と一行に記述しなければならない。

これを日本語そのままのURLでもブログカードに変換されるようにしてみる。

 

Pzカード管理画面、「リンクカード/DBキャッシュ管理」画面でも日本語URLはエンコードされていて読めない。

 

これらの症状、鼓動はCocoon テーマ付属機能のブログカードでも同じである。

引用先アドレスURLを日本語表示する方法

420行目付近に、

$url_decoded = urldecode($url); // 日本語化リンク名

と追加する。

		// URLパース(ドメイン名などを抽出)
		$url_m			=	parse_url( $url );
		$scheme			=	$url_m['scheme'];						// スキーム
		$domain			=	$url_m['host'];							// ドメイン名
		$domain_url		=	$scheme.'://'.$url_m['host'];			// ドメインURL
		$location		=	substr($url, mb_strlen($domain_url));	// ドメイン名以降
		$url_decoded	=	urldecode($url);	// 日本語化リンク名

 

そして、これが表示される部分、

781行目付近を次のように変更する。

 

		// リンク先URL
		$url1			=	'';
		$url2			=	'';
		if ($this->options['display-url']) {
			if ($this->options['display-url'] == '2') {
				$url2	=	'&nbsp;<div class="lkc-url-info"><cite>'.$st_op.$a_op.$url_decoded.$st_cl.$a_cl.'</cite></div>';
			} else {
				$url1	=	'<div class="lkc-url"><cite>'.$st_op.$a_op.$url_decoded.$st_cl.$a_cl.'</cite></div>';
			}
		}

これでURLが日本語で表示され、わかりやすくなる。

日本語URLがブログカードに変換されるようにする方法

266行目付近の正規表現に、

\p{Hiragana}ー。、\p{Katakana}\p{Han}

と挿入する。は長音。

			if ($this->options['auto-url']) {
$content	=	preg_replace( '/(^|<br ?\/?>)(<p.*>)?(https?:\/\/[-_\.!~*()a-zA-Z0-9\p{Hiragana}ー。、\p{Katakana}\p{Han};\/?:\@&= \$,%#] )(<\/p>|<br ?\/?>)?$/imu', 'pz-linkcard-auto-replace url="$3"', $content);
			}

 

285行目にも同様に、

\p{Hiragana}ー。、\p{Katakana}\p{Han}

挿入する。

			if ($this->options['auto-url']) {
preg_match_all('/(^|<br ?\/?>)(<p.*>)?(https?:\/\/[-_\.!~*()a-zA-Z0-9\p{Hiragana}ー。、\p{Katakana}\p{Han};\/?:\@&= \$,%#] )(<\/p>|<br ?\/?>)?$/im', $content, $m );

これで、漢字、ひらがな、カタカナの含まれたURLは、ブログカードへの変換対象となる。

一行の先頭からURLを貼り付ける。htmlソースでは、

<P>URL</p>

となるようにする。

Pzカード管理画面でURLを日本語表示する方法

Pzカード管理画面、「リンクカード/DBキャッシュ管理」画面でも日本語URLはエンコードされていて読めない。

これを作者本来の意図するところの日本語のURLで標示されるようにするには、編集で、

 

pz-linkcard/lib/pz-linkcard-cacheman-list.php

を次のように変更する。

295行目付近: $disp_url = urldecode($url);

 

	$url		=	esc_url($data->url);
	$disp_url	=	urldecode($url);
	$domain		=	$data->domain;
	// 日本語ドメイン対応

 

これだけで日本語でURLが表示され、わかりやすくなる。

記事編集画面で日本語URLを貼り付けた時に日本語URL表示にする方法

ブラウザーのアドレス欄からURLをコピーペーストした場合、

Edge では日本語URLのまま表示されるが、その他のブラウザー(chrome, firefox, opera)ではurlencode された意味不明なURLが表示される。

それで、Wordpressの記事編集欄にペーストすると、後で見返した場合にどの頁のことなのか識別困難になる。

これをurldecode した状態、日本語URL表記に変換する仕組みを追加する。記事の更新時にURLデコードされる。

 

//記事更新時にurldecodeする。
function filter_handler( $data , $postarr ) {
	$data['post_content'] = urldecode($data['post_content']);
  return $data;
}
add_filter( 'wp_insert_post_data', 'filter_handler', '99', 2 );

特にurlencode された文字列を表示したい場合には、全角文字にすればよい。

 

以上で、Wordpressでの記事編集時にも意味不明な文字列は表示されなくなる。

記事の閲覧者も意味不明な文字列を目にする機会が皆無になる。

 

Cocoonでも日本語URLをブログカード化

ついでに、Simplicity, Cocoon テーマ付属機能のブログカードでも同様に日本語URLをブログカード化できるようにしてみる。

外観→テーマエディターから編集可能。

ファイルのパーミッションを666に変更しておく。

 

lib/blogcard-in.php

188行目付近に、

\p{Hiragana}ー。、\p{Katakana}\p{Han}

を追加。

//本文中のURLをブログカードタグに変更する
if ( !function_exists( 'url_to_internal_blogcard' ) ):
function url_to_internal_blogcard($the_content) {
  $res = preg_match_all('/^(<p>)?(<a[^>] ?>)?https?:\/\/'.preg_quote(get_the_site_domain()).'(\/)?([-_.!~*\'()a-zA-Z0-9\p{Hiragana}ー。、\p{Katakana}\p{Han};\/?:\@&= \$,%#] )?(<\/a>)?(<\/p>)?/imu', $the_content,$m);
  //_v($m);
  foreach ($m[0] as $match) {

 

lib/blogcard-out.php

34行目付近に、

\p{Hiragana}ー。、\p{Katakana}\p{Han}

を追加。

//本文中の外部URLをはてなブログカードタグに変更する
if ( !function_exists( 'url_to_external_blog_card' ) ):
function url_to_external_blog_card($the_content) {
  //1行にURLのみが期待されている行(URL)を全て$mに取得
  $res = preg_match_all('/^(<p>)?(<a[^>] ?>)?https?:\/\/[-_.!~*\'()a-zA-Z0-9\p{Hiragana}ー。、\p{Katakana}\p{Han};\/?:\@&= \$,%#] (<\/a>)?(?!.*<br *\/?>).*?(<\/p>)?/imu', $the_content,$m);

 

 

 

  • またまたこのサイトのSSL証明書が期限切れになった。 Kusanagi の自動更新ができていない。 それで手動であれこれしてみても、こんなエラーが出る。# kusanagi update cert Challenge failed for domain makotoiwasaki.com Challenge failed for domain www.makotoiwasaki.com Attempting to renew cert (makotoiwasaki.com) from /etc/letsencrypt/renewal/makotoiwasaki.com.conf produced an unexpected error: Some challenges hav...
  • Google の Indexing API を使うと、新しい投稿記事を瞬時にGoogleの検索エンジンに登録できる。 WordPress のプラグインとしてインデックスAPIが利用できる。使い方は英語だが、この通り: ⏱️ Get Google To Index Your Website Instantly Using the Indexing API ⚡Take a look at how you can use Google's new indexing API & to get your website's pages and content crawled instantly instead of waiting for Google to...
  • Yoast SEO を停止して、Rank Math SEO プラグインを使ってみたらGoogle の検索結果に表示される記事抜粋スニペットの文字数が短過ぎに見えてびっくりした。#1 Yoast Alternative You Deserve - Rank Math SEO vs. Yoast SEORank Math SEO plugin for WordPress is hands down the best Yoast alternative WordPress plugin. And the best thing is, Rank Math is completely FREE!Rank Math
  • WP_CRON を停止して、Linux の crontab に移行する設定をこれまでに何度も試みたがうまくいかなかった。 毎日バックアップされるはずの、UpdraftPlus プラグインのクロンが動いていない。やっと成功した設定方法を記録しておく。wp-config.php に次の行を追加する。define('DISABLE_WP_CRON', true);/var/spool/cron  に、  httpd という名前のファイルを作成し、次の1行を追加する。 所有者を httpd.www など、httpd nginx サーバーの稼働ユーザー名と同じにする。nginx.conf に書いてある。root@s4:/v...
  • Kusanagi WordPress プラットフォームでは Fcache とBcache がある。 Fcache とはNginx ヱブサーバーのキャッシュ機能であり、Kusanagi の独自機能ではない。Nginx のアクセスログを眺めていると、  BYPASS MISS EXPIRED のみで、HITが殆どない。 トップ頁、アーカイブリストの頁ではHIT、 個別投稿頁では、BYPASS MISS EXPIRED ばかりでHITがない。Kusanagi fcache on とすると、fcache は有効になったかのように思えるが、本当にキャッシュが効いているのかどうかはログで確認しないとわからない。まず、Wordpressの編集画面にログインし...
  • HTTPD アクセスログの日本語化 Nginx,  Apache ヱブサーバーのアクセスログを見ると、日本語URLはエンコードされていて読めない。 そこで、デコードして表示させる。 ログのファイル名が ssl_access.log だとすると、tail -f ssl_access.log| perl -ne 'use URI::Escape; print uri_unescape($_);' tail -f access.log | php -R 'echo urldecode($argn)."\n";'で、日本語URlが読める状態で出力される。 Apacheのログをデコードする方法 - Life with ITプログラマ x ...
  • ヱブサイトの再構築中には、スタイルシート、style.css を頻繁に調整更新する。 CSSを追加、編集する度に再読み込みを繰り返して、変更の反映を確認していた。 これで編集者は反映を確認できるのだが、一般閲覧者はわざわざ再読み込みしたり、キャッシュを削除したりするはずはないので、変更が反映されていない崩れたデザインを見ているかもしれない。わざわざリロードしたりキャッシュを削除したりしなくても変更が確実に反映されるような設定方法を発見した。wp_enqueue_scripts で CSS、JS の読み込みを管理している場合には、次のようにfunctions.php に記述する。// 子テーマのstyle.cssを最後に読み込む add_acti...
  • 2679年8月25日

    頁カウンターの比較 WordPress

    WordPressで使える頁カウンターをいくつか同時に使ってカウントの仕方の違いを比べてみた。WP-PostViews    長期常用中 Post Views Counter  新規インストール Google Analytics Post Pageviews Pjaxblog の付属カウンター機能WP-PostViews は他のカウンターよりもカウントが多くなりがちなことに気づいた。一度のアクセスなのに2回カウントされることもあるようだ。ロボットクローラー Bots のリスト数も不十分に少ないような気がする。それで数が多くなりやすいのではないか。 それで Post Views Counter に乗り換えることにした。Post Views Cou...

WordPress カテゴリ人気記事 Views most

タグ関連記事

閲覧履歴