我为另一个网站写了一篇客座博客。我想在我的网站上发布这篇博客文章,但要包括canonical URL 指向原始出版商。
这使我可以在我的网站上发布文章,同时通知搜索引擎文章的规范位置,避免SEO处罚。
在wp\\U head操作中,WordPress打印rel=canonical
自动标记并将其放置在帖子的标题中。
我试图用一段代码来输出我自己的rel=canonical
(可能是已经自动输出的复合)与:
<?php if ( is_single(\'1234\') ) echo \'<link rel="canonical" href="https://www.examplesite.com/my-guest-post" />\'; ?>
检查时,此代码不会打印到页面上。我想这可能与解析顺序有关。
有人知道我如何正确地实现这一点吗?我不想过多地处理WordPress本机代码,但我想找到一种简单的机制,让我可以修改rel=canonical
每个帖子的meta标签。
我不想使用Yoast。
提前感谢,
最合适的回答,由SO网友:Jacob Peattie 整理而成
检查时,此代码不会打印到页面上。我想这可能与解析顺序有关。
这取决于您添加它的位置。如果要将代码添加到<head>
元素,您需要将其放在页眉的head元素中。php模板或主题函数中。php文件或插件a hook. 只在函数中粘贴该代码。php裸体(没有挂钩或函数定义)会导致WordPress在页面开始输出之前就输出它,这可能会导致错误。
无论如何,在这种情况下WordPress提供了一个过滤器挂钩,get_canonical_url
可用于更改WordPress添加的规范标头中使用的URL。
使用方法如下:
function wpse_302620_canonical_url( $canonical_url, $post ) {
if ( $post->ID === 1234 ) {
$canonical_url = \'https://www.examplesite.com/my-guest-post\';
}
return $canonical_url;
}
add_filter( \'get_canonical_url\', \'wpse_302620_canonical_url\', 10, 2 );