WordPress:覆盖YoastSEO中的规范URL



我正在使用一个片段来覆盖YoastSEO中WordPress/WooCommerce的规范URL。该片段基于官方文档示例:https://developer.yoast.com/features/seo-tags/canonical-urls/api/

这是我的代码:

function prefix_filter_canonical_example( $canonical ) {

if (is_shop() && is_paged() ) :

$canonical = get_permalink(woocommerce_get_page_id( 'shop' )).'page/'.get_query_var('paged').'/';

elseif(WCV_Vendors::is_vendor_page()):

$vendor_shop = urldecode( get_query_var( 'vendor_shop' ) );
$vendor_id   = WCV_Vendors::get_vendor_id( $vendor_shop );
$canonical  = WCV_Vendors::get_vendor_shop_page( $vendor_id );

endif;

return $canonical;

}   
add_filter( 'wpseo_canonical', 'prefix_filter_canonical_example' );

不管我返回什么内容,代码都不会对规范URL做任何事情。但是if/else工作正常,如果我回显$canonical的内容,我会看到正确的URL。

我已经在基本的店面主题中尝试过了,并且我停用了几乎所有的插件。但是这个片段不起作用。有什么我想念的吗?

如果不将任何优先级传递给操作,wordpress将把它作为10。Yoast SEO还调用这个过滤器来添加规范的url,这样wordpress就可以按照添加到操作中的顺序执行函数。

所以改变这条线

add_filter( 'wpseo_canonical', 'prefix_filter_canonical_example' );

有了这个

add_filter( 'wpseo_canonical', 'prefix_filter_canonical_example', 20 );

最新更新