设为首页 - 加入收藏
广告 1000x90
您的当前位置:主页 > 自媒体运营 > 正文

HMJ-Blog主题修改:添加canonical标签规范URL

来源:网络分享 编辑:引流技巧 时间:2025-05-14

对于搜索引擎来说,URL不同则是不同的页面,而网站经常出现一个页面多个URL的情况,例如带index.html的主页、伪静态后仍然存在的动态地址、以及分页(例如:https://www.4xseo.com/page/2)。canonical标签就是起到一个告知搜索引擎首选URL的作用。避免搜索引擎判断为重复页面给网站“减分”

基本上博主也是代码小白,都是网上找的,这里贴出来一起交流

canonical标签

functions.php添加代码

  • //完美的canonical
  • remove_action( 'wp_head', 'rel_canonical' );
  • function my_rel_canonical() {
  • global $post;
  • if (is_single() || is_page()) {
  • echo "<link rel=\"canonical\" href=\"" . get_permalink( $post->ID ) . "\" />\n";
  • }
  • if (is_home() && is_paged()) {
  • echo "<link rel=\"canonical\" href=\"".home_url("/")."\" />\n";
  • }
  • if (is_category() || is_category() && is_paged()) {
  • echo "<link rel=\"canonical\" href=\"".get_category_link(get_query_var('cat'))."\" />\n";
  • }
  • if (is_tag() || is_tag() && is_paged()) {
  • echo "<link rel=\"canonical\" href=\"".get_term_link(get_query_var('tag'), 'post_tag')."\" />\n";
  • }
  • if (is_search() || is_search() && is_paged()) {
  • echo "<link rel=\"canonical\" href=\"".get_search_link(get_query_var('search'))."\" />\n";
  • }
  • if (is_author()) {
  • echo "<link rel=\"canonical\" href=\"".get_option('home')."\" />\n";
  • }
  • if (is_date()) {
  • echo "<link rel=\"canonical\" href=\"".get_option('home')."\" />\n";
  • }
  • }
  • add_action('wp_head', 'my_rel_canonical');
  • 思享目前就是用的这个代码,添加于fufunctions.php文件中即可

    值得注意的是,以上代码主页的首选连接是带“/”的,如需去除,将home_url("/")中的“/”删除即可

    除此之外,思享还搜集了两种修改方法

    获取链接函数然后调用

    首先在functions.php文件中添加分类目录分页链接获取函数,代码如下:

  • /* wordpress中使用canonical标签
  • function cx_archive_link( $paged = true ) {
  •         $link = false;
  •         if ( is_front_page() ) {
  •                 $link = home_url( '/' );
  •         } else if ( is_home() && "page" == get_option('show_on_front') ) {
  •                 $link = get_permalink( get_option( 'page_for_posts' ) );
  •         } else if ( is_tax() || is_tag() || is_category() ) {
  •                 $term = get_queried_object();
  •                 $link = get_term_link( $term$term->taxonomy );
  •         } else if ( is_post_type_archive() ) {
  •                 $link = get_post_type_archive_link( get_post_type() );
  •         } else if ( is_author() ) {
  •                 $link = get_author_posts_url( get_query_var('author'), get_query_var('author_name') );
  •         } else if ( is_single() ) {
  •                 $link = get_permalink( $id );
  •         } else if ( is_archive() ) {
  •                 if ( is_date() ) {
  •                         if ( is_day() ) {
  •                                 $link = get_day_link( get_query_var('year'), get_query_var('monthnum'), get_query_var('day') );
  •                         } else if ( is_month() ) {
  •                                 $link = get_month_link( get_query_var('year'), get_query_var('monthnum') );
  •                         } else if ( is_year() ) {
  •                                 $link = get_year_link( get_query_var('year') );
  •                         }
  •                 }
  •         }
  •         if ( $paged && $link && get_query_var('paged') > 1 ) {
  •                 global $wp_rewrite;
  •                 if ( !$wp_rewrite->using_permalinks() ) {
  •                         $link = add_query_arg( 'paged', get_query_var('paged'), $link );
  •                 } else {
  •                         $link = user_trailingslashit( trailingslashit( $link ) . trailingslashit( $wp_rewrite->pagination_base ) . get_query_var('paged'), 'archive' );
  •                 }
  •         }
  •         echo '<link rel="canonical" href="'.$link.'"/>';
  • }
  • add_action('wp_head', 'cx_archive_link');
  • 然后打开主题的头部文件(一般情况下为header.php)在其中添加以下代码:

  • <?php
  • if(is_home()) { ?>
  • <link rel="canonical" href="<?php echo v7v3_archive_link();?>"/>
  • <?php } ?>
  • <?php
  • if(is_category()) { ?>
  • <link rel="canonical" href="<?php echo v7v3_archive_link();?>"/>
  • <?php } ?>
  • <?php
  • if(is_single()) { ?>
  • <link rel="canonical" href="<?php the_permalink(); ?>"/>
  • <?php }?>
  • <?php
  • if(is_tag()) { ?>
  • <link rel="canonical" href="<?php echo v7v3_archive_link();?>"/>
  • <?php }?>
  • 这样就实现了在wordpress网站上添加了canonical标签,集中网站权重。

    直接调用canonical标签

    其实,在 WordPress 2.9 发布之后,WordPress 已经默认支持这一标签了,我们无需做任何动作,主题就支持这一标签。
    如果我们要在文章也添加canonical标签,则在header.php中添加如下代码:

  • <?php if(is_single()){?>  
  • <link rel="canonical" href="<?php echo get_permalink($post->ID);?>" />  
  • <?php } ?>  
  • <?php if(is_home()){?>  
  • <link rel="canonical" href="<?php echo esc_url( home_url( '/' ) ); ?>" />  
  • <?php } ?>  
  • 以上是文章页和主页的,其他页面只要相应添加即可。大概就是这么个意思,这种方式应该比较好,不过思享比较小白,找不到对应的函数,呜呜~
    还要说明一下在 WordPress 的源文件 wp-includes/default-filters.php 中如下代码:

  • add_action( 'wp_head', 'rel_canonical' );  
  • rel_canonical()就是WordPress调用的函数,以此来输出 rel=”canonical” 标签的 HTML 代码的。 如果你还想使用以前自己的方法,那么你可以通过下面代码屏蔽掉它:

  • remove_action( 'wp_head', 'rel_canonical' );  
  • 如果使用插件来输出 Canonical 标签,而又没有在 WordPress 中屏蔽默认的 filter 的话,则会输出重复的 Canonical 标签。

    相关推荐:

    栏目分类

    微商引流技巧网 www.yinliujiqiao.com 联系QQ:1716014443 邮箱:1716014443@qq.com

    Copyright © 2019-2024 强大传媒 网站地图 rss地图

    Top