我想根据当前语言(使用Polylang)过滤我的WooCommerce会员计划的标题.以下代码在后端工作,即,当我将PolyLang设置为不同于英语的语言时,我可以看到成员计划标题(对于post_id为3884的成员计划)在/wp-admin/edit.php?post_type=wc_membership_plan处更改:

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/的前端,上述方法不起作用.在这里,无论语言如何,都使用原始的会员计划标题.将所有呼叫记录到my_the_title,我可以在浏览后端页面时看到POST 3884正在通过(我假设这就是它在后端工作的原因),但在浏览前端页面时,我没有看到POST 3884通过.我想the_title在这种情况下是错误的筛选器,但我不知道为什么以及在这种情况下还应该使用什么.

谢谢, 乌韦

PS:WordPress 6.3、WooCommerce 8.0.2、WooCommerce会员资格1.25、Polylang Pro 3.4.5、Polylang for WooCommerce 1.8

推荐答案

注意:以下内容需要子主题(there is no other way).

您需要通过your child theme覆盖WooCommerce会员资格插件中与我的帐户相关的模板文件.请阅读以下帖子:

首先,在您的子主题中,添加一个带有"MyAccount"子文件夹的"WooCommerce"文件夹.

因此,在WooCommerce成员资格插件中,从"Templates"目录&>"myAccount"子目录将文件"my-embership s.php"复制到您的子主题"mycount"子文件夹(位于"WooCommerce"文件夹内).

完成后,您可以打开/编辑子主题中的"my-embership s.php"模板文件.

到处替换(2次):

$customer_membership->get_plan()->get_name()

有:

get_the_title($customer_membership->get_plan()->id)

那就省钱吧.

现在,您可以使用您的代码段(with 100 filter hook)对这些成员计划名称进行更改.

Php相关问答推荐

此行动未经授权.升级Laravel时

PHP php_mongodb.dll for 32bit

SQLSTATE [42S02]:找不到基表或视图:1146 Table eshop. sessions不存在'''

如果WooCommerce中存在特定的运输方式,则隐藏其他运输方式

PHP:PHP手册-Manual

WooCommerce数量减号和加号图标未显示

WooCommerce:在 checkout 审核单和发票中显示定制产品数据

有没有办法为整个PHP应用程序启用严格类型

如何在PHP中组合日期范围

按列值将二维数组排序为不超过N个的递增组

如何配置我的.env文件以在laravel的一个项目中连接两个不同的数据库?

在WooCommercestore 页面上显示库存产品属性的值

添加不存在的订单元数据以扩展WooCommerce针对特定产品的管理订单搜索

Woocommerce 临时购物车税未根据第一个请求正确计算

过滤会员计划标题和标签

安装 Herd 并返回 Valet 后为 502

根据购买产品的自定义字段替换WooCommerce添加到购物车按钮

在PHP WordPress插件中使用变量连接路径时的问题解决方法

带有 nginx 的 Symfony 不提供 .js 和 .css 文件

Laravel Websockets 错误:(WebSocket 在建立连接之前关闭)