我想根据当前语言(使用 PolyLang)过滤我的 WooCommerce 成员(member)计划的标题。以下内容在后端起作用,即当我设置时,我可以看到 /wp-admin/edit.php?post_type=wc_membership_plan
上的成员(member)计划标题(对于 post_id 3884 的成员(member)计划)发生了变化PolyLang 到不同于英语的语言:
function my_the_title( $title, $id ) {
if (pll_current_language( 'slug' ) == 'en') {
return $title;
}
if ( $id == '3884' ) {
return $title . ' - Not English';
}
return $title;
}
add_filter( 'the_title', 'my_the_title', 10, 2 );
问题是上面的内容在 /my-account/members-area/
下的前端不起作用。无论语言如何,此处均使用原始成员(member)计划标题。记录对 my_the_title
的所有调用,我可以看到在浏览后端页面时会出现帖子 3884(我想这就是它在后端工作的原因),但是在浏览前端页面时,我没有看到 3884 号帖子通过。我猜在这种特殊情况下 the_title
是错误的过滤器,但我无法弄清楚为什么以及在这种情况下还可以使用什么。
谢谢, 乌韦
ps:WordPress 6.3、WooCommerce 8.0.2、WooCommerce Memberships 1.25、PolyLang Pro 3.4.5、PolyLang for WooCommerce 1.8
最佳答案
注意:以下内容需要子主题(没有其他方法)。
您需要通过您的子主题覆盖 WooCommerce 成员(member)插件中与我的帐户相关的模板文件。阅读以下主题:
- WooCommerce Template structure & Overriding templates via a child theme (official)
- How to override templates for WooCommerce Subscriptions?
首先在您的子主题中,添加一个带有“myaccount”子文件夹的“woocommerce”文件夹。
因此,在 WooCommerce 成员(member)插件中,从“templates”目录 >“myaccount”子目录将文件“my-memberships.php”复制到您的子主题“myaccount”子文件夹(位于“woocommerce”文件夹内)。
完成后,您可以从子主题中打开/编辑“my-memberships.php”模板文件。
到处替换(2次):
$customer_membership->get_plan()->get_name()
与:
get_the_title($customer_membership->get_plan()->id)
然后保存。
Now you can use your code snippet (with
the_title
filter hook) to make changes on those membership plan names.
关于php - 过滤成员(member)计划标题和标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76935467/