定制Rel=单个博客帖子的规范标签

时间:2018-05-03 作者:David Gaskin

我为另一个网站写了一篇客座博客。我想在我的网站上发布这篇博客文章,但要包括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。

提前感谢,

2 个回复
最合适的回答,由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 );

SO网友:revive

或为所有页面(主页除外)添加它们:

        <?php
           if ( is_front_page() ) {
              $canonical_url = get_home_url();
           } else {
              $canonical_url = get_permalink();
           }
        ?>
        <link rel="canonical" href="<?php echo $canonical_url ?>" />

结束

相关推荐

menu customization

我正在我的页面上使用高级主题。该主题在整个站点中只接受一个菜单。该网站是一个单页网站。主题的工作方式是,我们必须建立一个主页,然后使用菜单项来制作网站的各个部分。因此,我创建了一个菜单,其中包含我想要的所有部分,使用我创建的页面已经设置为部分。例如:我有主页、照片、视频等。这些都是单独的页面,但当我将它们作为菜单的一部分时,它们将在一个页面中显示在另一个页面的下方,菜单项将滚动到该页面上的锚定位置。许多主题都是这样工作的。My problem is :我需要翻译菜单或设置另一个页面(不是作为节,而是一个正