编程语言
首页 > 编程语言> > php – 将后缀添加到WooCommerce产品变体会被覆盖

php – 将后缀添加到WooCommerce产品变体会被覆盖

作者:互联网

我开始期待WooCommerce中内置了一些“更新功能”,只允许我重复名称post_title一段时间.然后它回到了钩子/ WooCommerce决定的东西?

我想以编程方式向特定变体添加“(已取消)”等后缀.

$new_title = get_the_title( $variationid ) . ' (Cancelled)';
wp_update_post(array('ID' =>$variationid, 'post_title' => $new_title));

这只是“暂停”一段时间……

我尝试禁用此挂钩,然后更改标题,但仍然会被覆盖.

add_filter( 'woocommerce_product_variation_title_include_attributes', '__return_false' );

有没有办法让WooCommerce停止覆盖变体的标题?

我的解决方案基于@LoicTheAztec的答案,使用基于我的自定义帖子状态“取消”的逻辑.

add_filter( 'woocommerce_product_variation_title', 'filter_product_variation_title_callback', 10, 4 );
function filter_product_variation_title_callback( $variation_title, $product, $title_base, $title_suffix ) {

    $id = $product->get_id();
    $status = get_post_status($id);
    if ($status == 'cancelled'){
        return $variation_title . ' (' . __("Cancelled", "woocommerce") . ')';
    } else {
        return $variation_title;
    }
}

解决方法:

您应该尝试使用专用的woocommerce_product_variation_title过滤器挂钩,允许暂时改变产品变体标题(有条件地),这样:

add_filter( 'woocommerce_product_variation_title', 'filter_product_variation_title_callback', 10, 4 );
function filter_product_variation_title_callback( $variation_title, $product, $title_base, $title_suffix ) {
    // Conditional custom field (example)
    if( $product->get_meta('_is_cancelled')  )
        $title_base .= ' (' . __("cancelled", "woocommerce") . ')';

    return $title_base
}

代码位于活动子主题(或活动主题)的function.php文件中.它应该有效.

Note: The $variation_title returns the product title including product attributes, that is disabled in the function code above…

在订单编辑页面上(也反映出来):

enter image description here

标签:wordpress,php,woocommerce,variations,custom-taxonomy
来源: https://codeday.me/bug/20190627/1302811.html