プラグインの All In One SEO では、canonical が設定できますが、
任意のページで ON/OFF 出来ないので、なんとかならないかと、
remove_action(‘wp_head’, ‘All_in_One_SEO_Pack::wp_head’);
とか試してみたのですが、どうにもならず悶々と調べておりましたところ、こんなやりとりを発見!
https://wordpress.org/support/topic/specify-canonical-url
なるほど。
All In One SEO には、フィルターフックに aioseop_canonical_url が用意されているようです。
では、All In One SEO のソースコードを見てみると、 aioseop_class.php にある、canonical を出力する部分には...
1 2 3 |
$url = apply_filters( 'aioseop_canonical_url', $url ); if ( !empty( $url ) ) echo '<link rel="canonical" href="'. esc_url( $url ) . '" />'."n"; |
となっています。
if ( !empty( $url ) ) なので、add_filter で $url に null をかえすようにすれば、canonical のmetaタグは出力されないわけです。
とうことで、たとえば、postID が 306 の固定ページで、canonicalを表示しないようにしたければ、
1 2 3 4 5 6 7 8 9 10 |
add_filter( 'aioseop_canonical_url', 'no_canonical_url'); function no_canonical_url($url){ global $wp_query; $postID = $wp_query->post->ID; if ($postID=='306'){ return false; }else{ return $url; } } |
というのを、function.phpなりに入れておけば、バッチリです!