WordPress原生XML站点地图功能

WordPress在5.5版中引入了XML站点地图功能,将自动为您的站点生成XML站点地图。WordPress生成的站点地图索引文件,最多可包含50,000个单独的站点地图。每个单独的站点地图最多可以包含2,000个URL。

WordPress原生XML站点地图功能

查看WordPress自动生成的XML站点地图方法:你的域名/ wp sitemap.xm

对于这个WordPress原生的XML站点地图功能,众说纷纭,概括一下,肯定没有专业的SEO插件方便好用。经测试,百度目前支持WordPress原生的XML站点地图,就是感觉没有我主题自带的按百度要求格式生成的站点地图索引快,主题生成的站点地图隔天就索引了,但WordPress原生的XML 站点地图链接提交几天后才索引,之所以索引慢,感觉是WP动态生成的站点地图速度慢,在一个 页面动态生成2000篇的文章列表,加载速度可想而知。

WordPress原生的XML站点地图首页是文章、分类、标签、自定义分类法目录索3 |链接。如果提交给搜索引|擎如百度,需要分别提交链接:

比如文章: ttp:/pxxx/wp-sitemap-posts-post- 1.xml

不能仅提交首页: ts:/xxxx/wp-sitemap.xml

鉴于索引有些慢,更适合更新不是很频繁的站点,如果嫌索弓|慢而不想使用这个功能,或者还是想用第三方插件功能生成站点地图,可以用下面的代码禁用WordPress自带的XML站点地图功能:

add_filter( ‘wp_sitemaps_enabled’, ‘__return_false’ );

程序文件位置: wp-includes\sitemaps\class -wp -sitemaps php

另外,WordPress也提供了过滤器,可以在站点地图中排除部分内容,比如从站点地图中删除页面、标签等。

站点地图排除页面

  1. add_filter(
  2. ‘wp_sitemaps_post_types’,
  3. function( $post_types ) {
  4. unset( $post_types[‘page’] );
  5. return $post_types;
  6. }
  7. );

站点地图排除标签

  1. add_filter(
  2. ‘wp_sitemaps_taxonomies’,
  3. function( $taxonomies ) {
  4. unset( $taxonomies[‘post_tag’] );
  5. return $taxonomies;
  6. }
  7. );

站点地图排除分类

  1. add_filter(
  2. ‘wp_sitemaps_taxonomies’,
  3. function( $taxonomies ) {
  4. unset( $taxonomies[‘category’] );
  5. return $taxonomies;
  6. }
  7. );

站点地图排除部分文章

  1. add_filter(
  2. ‘wp_sitemaps_posts_query_args’,
  3. function( $args, $post_type ) {
  4. if ( ‘post’ !== $post_type ) {
  5. return $args;
  6. }
  7.  
  8. $args[‘post__not_in’] = isset( $args[‘post__not_in’] ) ? $args[‘post__not_in’] : array();
  9. $args[‘post__not_in’][] = 123; // 排除的文章ID.
  10. return $args;
  11. }, 10, 2
  12. );

站点地图排除某个分类的文章

  1. add_filter(
  2. ‘wp_sitemaps_taxonomies_query_args’,
  3. function( $args ) {
  4. $args[‘exclude’] = isset( $args[‘exclude’] ) ? $args[‘exclude’] : array();
  5. $args[‘exclude’][] = 7;// 分类ID
  6. return $args;
  7. }
  8. );

站点地图排除某个用户链接

  1. add_filter(
  2. ‘wp_sitemaps_users_query_args’,
  3. function( $args ) {
  4. $args[‘exclude’] = isset( $args[‘exclude’] ) ? $args[‘exclude’] : array();
  5. $args[‘exclude’][] = 1;// 用户ID
  6. return $args;
  7. }
  8. );

根据自定义栏目排除文章

  1. // disable post based on meta field
  2. function shapeSpace_disable_sitemap_post_meta($args, $post_type) {
  3. if (‘post’ !== $post_type) return $args; // can be any post type
  4. $args[‘meta_query’] = isset($args[‘meta_query’]) ? $args[‘meta_query’] : array();
  5. $args[‘meta_query’][] = array(
  6. ‘key’ => ‘sitemap’, // can be any meta key
  7. ‘value’ => ‘1’, // can be any meta value
  8. ‘compare’ => ‘=’, // can use any comparison
  9. );
  10. return $args;
  11. }
  12. add_filter(‘wp_sitemaps_posts_query_args’, ‘shapeSpace_disable_sitemap_post_meta’, 10, 2);

站点地图显示文章最后更新日期

  1. add_filter(
  2. ‘wp_sitemaps_posts_entry’,
  3. function( $entry, $post ) {
  4. $entry[‘lastmod’] = $post->post_modified_gmt;
  5. return $entry;
  6. },
  7. 10,
  8. 2
  9. );

修改WordPress原生站点地图名称

  1. add_action( ‘init’, ‘add_new_url_main_sitemap’ );
  2. add_filter( ‘home_url’, ‘fix_wp_sitemap_url’, 11, 2 );
  3. // 修改新站点地图链接规则
  4. function add_new_url_main_sitemap() {
  5. add_rewrite_rule( ‘^zm-sitemap\.xml$’, ‘index.php?sitemap=index’, ‘top’ );
  6. }
  7.  
  8. // 将默认的wp-sitemap.xml改为zm-sitemap
  9. function fix_wp_sitemap_url( $url, $path ) {
  10. if ( ‘/wp-sitemap.xml’ === $path ) {
  11. return str_replace( ‘/wp-sitemap.xml’, ‘/zm-sitemap.xml’, $url );
  12. }
  13. return $url;
  14. }

上面的例子是将默认的wp-sitemap.xm改为zm-sitemap.xm,修改其中的m-sitemap,让别人不知道你
的站点地图链接是什么。
更改后需要到WP后台一固定链接,保存一下固定链接设置, 否则不会生效。

不过总的索引目录名称改了,但子项的文章列表链接还是默认的,完全修改方法还在研究,初步思路:

例如,修改文章索弓|链接/wp-sitemap- posts post- 1.xml为my-sitemap-posts- 1.xml

  1. // 重写链接规则,文件位于wp-includes\sitemaps 目录class-wp-sitemaps.php
  2. add action( ‘init, ‘zm add new sitemap posts_ ur’ );
  3. function zm add new sitemap_ posts url0 {
    4.
    add rewrite rule(
    5.
    ‘^my-sitemap-posts-([a-z]+?)-(\d+ ?).xml$’,
    5.
    “indexphp?sitemap= $matches[1]&paged= $matches[2]
    7.
    ‘top’
    B.
  4. //修改文章索引链接
  5. add filter( ‘home_ url’, ‘zm sitemap posts’, 11, 2 ):
  6. function zm sitemap posts( $url, $path ){
    13.
    if ( ‘/wp-sitemap-posts-post- 1.xml === $path )
    14.
    return str replace( ‘/wp-sitemap-posts-post- 1.xml’, /my-sitemap-posts-1.xml, $url );
    15.
    16.
    return $url;
    17.
    添加代码后,链接确实是变了,但打开直接404了,大概原因第一段的链接替换规则不对, 有点高难,哪位
    高手帮改一下吧。
    修改默认链接名称,个人认为很有必要,不然这个带链接的文章列表,可能会被恶意采集者利用上。因暂
    时无法更改默认的子项链接,另外,原生站点地图是动态生成,如果文章很多可能生成速度比较慢,造成
    搜索引擎无法索引,所以还是考虑禁用吧。
    判断地图功能是否开启

判断地图功能是否开启

  1. if(wp sitemaps get server0- > sitemaps enabled( ) {
    echo‘地图已开启”
    else
    4
    echo‘地图已禁用’
    .};
    其它过滤器:
    wp_ sitemaps_ max urls 修改站点地图中包含的最大URL数。默认值为 2000个URL。
    更改XML站点地图的外观
    wp_ sitemaps stylesheet url- 站点地图样式表的URL。
    wp_ sitemaps stylesheet index url- 站点地图索引|样式表的URL。
    wp_ sitemaps stylesheet content- 站点地图样式表的内容。
    wp_ sitemaps index stylesheet content- 站点地图索引|样式表的内容。
    wp_ sitemaps stylesheet CSS- 滤站点地图样式表的CSS。

更多

之前,WordPress 不提供任何SEO功能,只能靠第三方插件或者高级主题自带的SEO功能,这次将站点地
图集成到核心程序中,是一个 良好的开端。

本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:400@21cn.com我们将第一时间处理!

资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。

                                                               

所有资源仅限于参考和学习,版权归原作者所有,更多请阅读皆是你网络服务协议

给TA赞赏
共{{data.count}}人
人已赞赏
壁纸站电脑壁纸精选

长发少女黑色吊带裙 好看的4k动漫美女壁纸3840x2160

2023-7-2 11:58:13

WordPress

WordPress用户名修改插件

2023-7-1 23:02:43

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索