我们使用"Net"来识别正在销售的产品.我已经编写了以下代码,以便在产品上市或markdown 时自动向产品添加或从产品中删除网络.

function change_product_titles( $post, $title ) {
    
    if ( !empty( get_post_meta( $post->get_id, '_sale_price', true ))){
        return $title.' NET';
    }else{
        return $title;
    }
}
add_filter( 'woocommerce_product_title', 'change_product_titles', 10, 2 );

这看起来很简单,但我在任何地方都看不到预期的效果.

推荐答案

您没有使用正确的钩子和正确的方式…相反,当产品在销售时,可以try 以下方法,即在产品名称(和产品名称)everywhere上添加后缀,而不需要不断更新产品名称:

add_filter( 'the_title', 'change_product_title', 10, 2 );
function change_product_title( $post_title, $post_id ) {
    if( get_post_type($post_id) === 'product' ) {
        $product = wc_get_product($post_id);

        if( is_a($product, 'WC_Product') && $product->get_sale_price() > 0 ) {
            $post_title .= ' NET';
        }
    }
    return $post_title;
}

add_filter( 'woocommerce_product_variation_get_name', 'change_product_name', 10, 2 );
add_filter( 'woocommerce_product_get_name', 'change_product_name', 10, 2 );
function change_product_name( $name, $product ) {
    if ( $product->get_sale_price() > 0 ){
        $name .= ' NET';
    }
    return $name;
}

代码位于您的子主题的unctions.php文件中(或在插件中).经过测试,效果良好.

您将需要删除"网络"从您的产品名称在管理.

Php相关问答推荐

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

如何使用属性#[Embedded]嵌入带有规则的对象集合?

WooCommerce产品按特定元数据的自定义数字排序选项

从WooCommerce购物车和 checkout 页面自定义发货标签

在没有谷歌云客户端PHP库的情况下将图像上传到PHP中的Google存储API?

如何修复条带元素中的错误&&客户端_机密&

通过注册在Laravel中分配角色

在冲突和几何上插入的Postgres参数化查询在PHP中不起作用

SFTP在PHP(phpseclib3\Net\SFTP)-过滤目录列表结果服务器端可能吗?类似于psftp中的LS命令?

WooCommerce 回购自定义插件:如何更新用户钱包?

通过存储库检索 Blade 上的单值数据 出错

如何通过帖子自定义元数据进行查询

在WooCommerce可变产品中显示所选变体的自定义字段

在WooCommerce购物车和 checkout 页面中更改总计文本

PHP:如何将多列sql查询结果转换成数组

批量作业(job)提交错误无法处理所有文档,uris 似乎正确?

计算组合指数

转发和非转发呼叫 - 后期静态绑定

如何正确使用Flysystem和Local Adapter

使用 PHP 有条件地使用关键字 Twilio Programmable SMS