カノニカルに悩む

プライバーポリシーのページの元ネタを提供してくれたページに対してカノニカルを設定しようと思ったのですが、ネットでいろいろと検索してみるとSEOのプラグインを入れて対応する方法がたくさん出てきました。それでもいいのかもしれませんがカノニカルを設定するだけのためにフルスペックのSEOツールを導入するのもどうなのかなとちょっと悩んでいました。

結論から言ってしまえば固定ページにカスタムフィールドを追加して、フィールドに値が設定されていればそれをURLとしてカノニカルに設定するような仕組みを作ってみることにしました。固定ページにカスタムフィールドを追加するのには「Advanced Custom Fields」というプラグインを利用させてもらい、function.phpに少しコードを追加することで無事に思ったことができるようになりました。

ちなみにfunction.phpにはこんなコードを追加しています(カノニカルURLのカスタムフィールドには’canonical’という名前を付けています)。

remove_action('wp_head', 'rel_canonical');
if(!function_exists('canonical_link_maker'))
{
	function canonical_link_maker()
	{
		$url = get_field('canonical');
		if(empty($url))
		{
			$url = (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
		}
		echo PHP_EOL.'<link rel="canonical" href="'. esc_url($url).'">'.PHP_EOL;
	}
}
add_action('wp_head', 'canonical_link_maker');

まあ、if文の中にそのままフィールド値の代入をすればもう少し短くなってよいのかもしれませんが、好みの問題で冗長な形にしてあります。

Advanced Custom Fields

5.12.2 Fix – Cloned fields in custom named options pages now behave correctly Fix – Default values and the acf/load_value filter are now applied if a field value load fails security validation Fix – The ACF field is no longer present in REST responses if the ACF REST API setting is disabled Fix – Duplicating a flexible content layout or repeater row now also replaces the field ID in for attributes 5.12.1 Release Date 23rd March 2022 New – REST API now supports the comment route for displaying ACF fields.

コメントを残す