在WooCommerce中基于productid应用remove_action



是否可以根据某个产品ID删除WooCommerce钩子(在本例中为产品标题)?

remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );

尝试修改一些PHP字符串,但不成功:

if ( is_single( 'ID' ) ) {
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 )}

谁能弄清楚如何使用条件逻辑并应用于删除特定产品ID上的钩子?在特定类别的产品中隐藏它也可以解决这个问题。

remove_action放在优先级较低的add_action中(在本例中小于5)。

则可以使用global $product

得到:

function action_woocommerce_single_product_summary() {
global $product;

// Set productIDs
$product_ids = array ( 30, 815 );

// Is a WC product
if ( is_a( $product, 'WC_Product' ) ) {
// Get productID
$product_id = $product->get_id();

// Product Id is in the array
if ( in_array( $product_id, $product_ids ) ) {
// Remove
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
}
}
}
add_action( 'woocommerce_single_product_summary', 'action_woocommerce_single_product_summary', 4 );

要基于产品类别和productID应用相同的方法,使用:

function action_woocommerce_single_product_summary() {
global $product;

// Set categories
$categories = array ( 'categorie-1', 'categorie-2' );

// Is a WC product
if ( is_a( $product, 'WC_Product' ) ) {
// Get productID
$product_id = $product->get_id();

// Has term
if ( has_term( $categories, 'product_cat', $product_id ) ) {
// Remove
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
}
}
}
add_action( 'woocommerce_single_product_summary', 'action_woocommerce_single_product_summary', 4 );

相关内容

最新更新