首页 > 解决方案 > 在 WooCommerce 存档产品页面上更改分页基础 slug

问题描述

我想在 WooCommerce 存档页面上将分页 slug,当前的“page”更改为“strana”。

带有网址的默认设置http://localhost/obchod/并且http://localhost/obchod/page/2/工作正常。当我更改分页基础并重新保存永久链接时,它不起作用。最终网址应如下所示:http://localhost/obchod/strana/2/

这是我更改分页基础的代码:

function custom_rewrite_rules() {
  global $wp_rewrite;
  $wp_rewrite->pagination_base = 'strana';
}
add_action('init', 'custom_rewrite_rules');

我总是在 WordPress 上重新保存永久链接,或者我使用$wp_rewrite->flush_rules();,但这些都不起作用。

请注意,此代码适用于 WordPress 分页,但不适用于 WooCommerce 分页商店页面

我究竟做错了什么?

标签: wordpresswoocommercepaginationpermalinksslug

解决方案


首先,我们需要更改 Wordpress 生成的链接的格式。由于我们只需要更改商店存档的分页格式,因此我们添加了一个条件标签 is_shop() ,因此另一个分页将保持旧格式。

function custom_rewrite_rules() {
global $wp_rewrite;
if(is_shop()) {
$wp_rewrite->pagination_base = 'strana';
}
}
add_action('template_redirect', 'custom_rewrite_rules');

接下来,我们添加_rewrite_rule() 让Wordpress理解分页页面的新链接格式

add_rewrite_rule(
'^obchod/strana/([^/]+)/?',
'index.php?paged=$matches[1]',
'top'
); 

obchod here = 您的商店基地,默认其商店 fow woocommerce 商店

更新测试

function custom_rewrite_rules() {
global $wp_rewrite;
$wp_rewrite->pagination_base = 'strana';

}
add_action('init', 'custom_rewrite_rules');

add_rewrite_rule(
'^obchod/strana/([^/]+)/?',
'index.php?paged=$matches[1]&post_type=product',
'top'
); 

推荐阅读