如何解决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
的内容,我会看到正确的网址。
我已经使用基本店面主题尝试过它,并且我停用了几乎所有插件。但该片段将不起作用。有什么我想念的吗?
解决方法
如果你没有给动作传递任何优先级,wordpress 将把它当作 10。Yoast SEO 也调用这个过滤器来添加规范的 url,所以 wordpress 会按照它们被添加到动作的顺序执行功能。
所以改变这一行
add_filter( 'wpseo_canonical','prefix_filter_canonical_example' );
有了这个
add_filter( 'wpseo_canonical','prefix_filter_canonical_example',20 );
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。