【Wordperss】canonicalのタグを独自で設定する
概要
wordpressでサイトを制作する場合に、SEOプラグインとしてYoast SEOなどを利用するかと思う。
今回のリニューアルでWordpressの環境はAWS lightsailという環境でまずはIPアドレスでの環境を提供していただいた。
その後、ネームサーバーと紐づけた後にサイトでcanonicalを確認したのだが、これがなぜかIPアドレスのまま。
一応、YoastSEOで「SEOの構造に変化があったため・・・」といった項目が表示されたので更新をしたのだが、それでもなぜかIPアドレスのままなので独自でcanonicalを設定することにしました。
今回やりたい事
今回はcanonicalがIPアドレスで出力されたままなので、これをちゃんとしたドメインで表示させるようにします。
<!-- IPアドレスのままなのでダメ -->
<link rel="canonical" href="https://179.34.32.34" />
<!-- URLにする(test.co.jpはダミー)-->
<link rel="canonical" href="https://www.test.co.jp/" />
Yoast SEOで出力されるcanonicalを非表示
まずはYoast SEOで自動的に出力されるcanonicalのタグを非表示にする必要があります。
こちらはYoaset SEOのプラグインでいろいろなAPI Documentationがありカスタマイズができます。
今回はwpseo_canonical
というAPIがあるのでこちらをadd_filter
で処理します。
add_filter('wpseo_canonical','__return_false');
__return_false
としてあげることで、canonicalのタグが表示されなくなります。
こちらは下記のサイトが参考になりました。
canonicalのタグを独自で設定する
現在のURLを取得する関数を作成
Yoast SEOで出力されるcanonicalを非表示にしたら、今度は独自でURLを取得する関数をfunctions.php
に書きます。
/* 下記の関数で独自でcanonicalを設定(header.php) */
function get_current_link() {
return (is_ssl() ? 'https' : 'http') . '://www.test.co.jp'. $_SERVER["REQUEST_URI"];
}
URLを取得してそれをreturn
で返してあげる。
ヘッダー部分から関数を呼び出す
functions.php
でURLを取得する関数を書いたら、今度はheade.php
からこの関数を呼び出す。
<link rel="canonical" href="<?php echo get_current_link(); ?>" />
上記のようにget_current_link()
でURLを取得したら、それをecho
で出力してあげる。
これで問題なくcaconicalのURLが正常になりました。
番外編:og:urlの設定
canonical以外にもmetaタグの「og:url」もIPアドレスのままだったのだが、やり方は一緒です。
<meta property="og:url" content="https://179.34.32.34" />
上記のようにIPアドレスが出力されていたが、wpseo_opengraph_url
というAPIが用意されているのでこちらをadd_filter
で同様に処理する。
function my_ogp_url($url){
$pattern = 'https://179.34.32.34';
if(strstr($url, $pattern)){
return (is_ssl() ? 'https' : 'http') . '://www.test.co.jp'. $_SERVER["REQUEST_URI"];
}
return $url;
}
add_filter('wpseo_opengraph_url','my_ogp_url');
wpseo_opengraph_url
は引数でURLを取得できる。
このURLとあらかじめ用意したIPアドレスのパターン($pattern
)をstrstr
を使って、含まれてるかチェックしてる。(ただstrstr
でいいのかどうか。ちゃんと正規表現を使ったほうがいいのかも)
true
が成立した場合は書き換えたURLをreturn
で返してあげて、false
の場合はそのままURLを返している。
まとめ
ほんとはYoast SEOで出力されるcanonicalのURLがIPアドレスでなければ、わざわざこんな処理する必要はないのだが、、、ただYoast SEOはいろいろカスタマイズができると知ったので良しとする。
Discussion