在 Woocommerce 中更改添加到购物车 is_purchasable 通知

Change add to cart is_purchasable notice in Woocommerce

我想将通知'Sorry, this product cannot be purchased'更改为'Sorry, the product [product name] cannot be purchased.'

我在 WC_Cart add_to_cart() 方法源代码中找到了它,下面是我想要更改的内容的摘录:

if ( ! $product_data->is_purchasable() ) {
   #the current line
   #throw new Exception( __( 'Sorry, this product cannot be purchased.', 'woocommerce' ) ); 
   # i want to replace for this one
   throw new Exception(sprintf( __( 'Sorry, the product "%s" cannot be purchased.', 'woocommerce' ),  $product_data->get_name() ) );
}

有没有办法在我的 functions.php 文件中的钩子或过滤器或其他东西中执行此操作?

这可以在 WordPress gettext 过滤器钩子中使用以下钩子函数来完成:

add_filter('gettext', 'renaming_purshasable_notice', 100, 3 );
function renaming_purshasable_notice( $translated_text, $text, $domain ) {
    if( $text === 'Sorry, this product cannot be purchased.' ) {
        $post_title = get_post($GLOBALS['_POST']['add-to-cart'])->post_title;

        $translated_text = sprintf( __( 'Sorry, the product %s cannot be purchased.', $domain ), '"'.$post_title.'"' );
    }
    return $translated_text;
}

代码进入活动子主题(或活动主题)的 function.php 文件。

已测试并有效。

你会得到类似的东西: