出于各种原因,我被要求跨多个子域复制wordpress博客。显然,这将导致重复的内容问题,我希望通过使用一个规范标记(指向单个子域(www))来缓解这一问题。
然而,我正在网站上使用Yoast SEO。这将自动生成规范标记,并似乎使用我当时所在的子域。大概它是从WP\\u SITEURL设置或类似的设置中获取的,但我必须首先修改它以允许多个子域。
我有没有办法强迫Yoast SEO对所有规范URL使用一个子域?我仍然需要站点上的所有链接和一般功能来利用其他子域(无论当前在哪个子域上),但规范应该始终指向单个子域。
请注意:重定向不是一个选项。
我认为最好的方法是使用Yoast SEO API,但我不熟悉它。我想我需要调整以下内容以包括我想要的子域,但我不确定将生成的URL的其余部分放在那里的语法。
add_filter( \'wpseo_canonical\', \'http://www.\' );
最合适的回答,由SO网友:Sisir 整理而成
下面是一个小插件,使用它,您应该能够替换另一个域的规范url的域。
<?php
/*
* Plugin Name: WPSE WPSEO Canonical
* Plugin URI: http://wordpress.stackexchange.com
* Description: Changes canonical url domain.
* Author: Sisir
* Version: 1.0
* Author URI: http://developerpage.net
*
**/
add_filter(\'wpseo_canonical\', \'swpseo_canonical_domain_replace\');
function swpseo_canonical_domain_replace($url){
$domain = \'google.com\'; // this can be loaded from option table if you want admin to set it.
$parsed = parse_url(home_url());
$current_site_domain = $parsed[\'host\'];
return str_replace($current_site_domain, $domain, $url);
}
注:代码未测试。如果不起作用,请告诉我