WordPress canonicalタグで「正規のURL」を出力する

Filed under: wordpress — kdcs @ 19年3月20日 水曜日

canonicalタグは重複するページや類似ページなどコピーコンテンツとしてgoogleからペナルティを受けないために記述するもの

<link rel="canonical" href="「正規のURL」">

サイトをSSL化(httpからhttps)した場合にも有効
header.phpのheadタグ内に入れる
※is_front_page=トップページ is_home=投稿ページ(投稿ページのスラッグ入れる)

<?php if ( is_front_page() ) {
$canonical_url=get_bloginfo('url');
}
elseif ( is_home() ) {
$canonical_url=get_bloginfo('url').'/{ページスラッグ}';
}
elseif (is_category()) {
$canonical_url=get_category_link(get_query_var('cat'));
}
elseif (is_page()||is_single()) {
$canonical_url=get_permalink();
}
$paged = get_query_var( 'paged', 1 );
$page = get_query_var( 'page', 1 );
if ( $paged >= 2 || $page >= 2) {
$canonical_url=$canonical_url.'/page/'.max( $paged, $page );
}
?>
<?php if(!(is_404())):?>
<link rel="canonical" href="<?php echo $canonical_url; ?>">
<?php endif;?>

※WordPressデバッグモードで
「Notice: Undefined variable」が出るため13、14行$paged =と$page =を追加

function.phpに記述する場合(未検証 2019.6.8)
※header.phpテンプレート内に「wp_head」が必要

remove_action('wp_head', 'rel_canonical');
 
add_action( 'wp_head', 'add_canonical' );
function add_canonical() {
 $canonical = null;
 
 if( is_home() || is_front_page() ) {
 $canonical = home_url();
 } elseif ( is_category() ) {
 $canonical = get_category_link( get_query_var('cat') );
 } else if(is_tag()){
 $canonical = get_tag_link(get_queried_object()->term_id);
 } elseif ( is_search() ) {
 $canonical = get_search_link();
 } elseif ( is_page() || is_single() ) {
 $canonical = get_permalink();
 } else{
 $canonical = home_url();
 }
 echo '<link rel="canonical" href="'.$canonical.'">'."\n";
}

header内に出力される内容

<link rel="canonical" href="ページのURL">

サイト内検索

カテゴリー

最近の投稿

« |WordPress canonicalタグで「正規のURL」を出力する| »
↑上に戻る