WPML
状态
未解决
报告针对
WPML SEO 2.1.0
相关插件/主题
Rank Math SEO
主题标签
Compatibility

问题概述

如果您使用的是 Rank Math SEO 插件,特别是启用了 News Sitemap 功能的 Pro 版本,您可能会遇到这样一个问题:news-sitemap.xml 文件中的 <news:language> 标签为次要语言的文章错误地显示了网站默认语言的语言代码。

临时解决方法

在继续操作之前,请确保已对站点进行完整备份


  • 打开 …/wp-content/plugins/seo-by-rank-math-pro/includes/modules/news-sitemap/class-news-sitemap.php 文件。

  • 将:
    		$output .= $this->get_news_publication( $renderer );

  • 替换为:
    		//start WPML workaround
    		global $sitepress;
    		remove_filter(
    			'get_pages',
    			[ $sitepress, 'get_pages_adjust_ids' ],
    			1
    		);
    		$my_post_language_details = apply_filters( 'wpml_post_language_details', NULL, url_to_postid($url["loc"]) );
    		$xmlString = $this->get_news_publication( $renderer );
    		$pattern = '/(<news:language>)[^<>]*(</news:language>)/i';
    		$replacement = '${1}'. $my_post_language_details["language_code"] .'$2';
    		$modifiedXmlString = preg_replace($pattern, $replacement, $xmlString);
    		$output .= $modifiedXmlString;
    		//end WPML workaround
  • 此外,您可能还需要禁用 XML 站点地图缓存。为此,您可以将以下代码行添加到主题的 functions.php 文件中:
    add_filter( 'rank_math/sitemap/enable_caching', '__return_false');

所有已知问题 →