跳到主要内容

我为另一个网站写了一个客座博客文章。我想在我的网站上发布相同的博客文章,但要包含指向原始发布者的规范URL。

这使我可以在网站上发布文章,同时将搜索结果的规范位置通知搜索引擎,并避免SEO罚款。

在wp_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。

提前致谢,

经检查,此代码永远不会打印到页面上。我想这可能与解析顺序有关。

这取决于您添加它的位置。如果要将代码添加到<head>页面的元素,则需要将其放在header.php模板或主题的functions.php文件或带有钩子的插件的头部的该元素中。仅将这些代码粘贴到WordPress主题或者父主题的functions.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 );
回到顶部