2 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
使用has_term()WordPress 條件函數(shù)將簡化代碼使其更有效,這樣:
add_filter( 'woocommerce_available_payment_gateways', 'filter_available_payment_gateways' );
function filter_available_payment_gateways( $available_gateways ) {
// Only on checkout page
if ( is_checkout() && ! is_wc_endpoint_url() ) {
// Here define your product categories
$product_categories = array( 't-shirts', 'posters' ); // Can be term names, term slugs or term ids
$taxonomy = 'product_cat'; // For WooCommerce product category terms (or 'product_tag' for WooCommerce product tag terms)
$payment_method = 'cheque'; // Here define your payment method id to be removed
$hide_payment = false;
// Loop through cart items
foreach ( WC()->cart->get_cart_contents() as $item ) {
if ( ! has_term( $product_categories, $taxonomy, $item['product_id'] ) ) {
$hide_payment = true;
}
}
if ( $hide_payment ) {
unset( $available_gateways[$payment_method] );
}
}
return $available_gateways;
}
代碼位于活動(dòng)子主題(或活動(dòng)主題)的 functions.php 文件中。測(cè)試和工作。
改為處理產(chǎn)品標(biāo)簽
只需將代碼中的分類法替換'product_cat'為'product_tag'.
也針對(duì)父產(chǎn)品類別
如果您還需要定位父產(chǎn)品類別,則必須改用它:
// Custom conditional function that handle parent product categories too
function has_product_categories( $categories, $product_id = 0 ) {
$parent_term_ids = $categories_ids = array(); // Initializing
$taxonomy = 'product_cat';
$product_id = $product_id == 0 ? get_the_id() : $product_id;
if( is_string( $categories ) ) {
$categories = (array) $categories; // Convert string to array
}
// Convert categories term names and slugs to categories term ids
foreach ( $categories as $category ){
$result = (array) term_exists( $category, $taxonomy );
if ( ! empty( $result ) ) {
$categories_ids[] = reset($result);
}
}
// Loop through the current product category terms to get only parent main category term
foreach( get_the_terms( $product_id, $taxonomy ) as $term ){
if( $term->parent > 0 ){
$parent_term_ids[] = $term->parent; // Set the parent product category
$parent_term_ids[] = $term->term_id; // (and the child)
} else {
$parent_term_ids[] = $term->term_id; // It is the Main category term and we set it.
}
}
return array_intersect( $categories_ids, array_unique($parent_term_ids) ) ? true : false;
}
add_filter( 'woocommerce_available_payment_gateways', 'filter_available_payment_gateways' );
function filter_available_payment_gateways( $available_gateways ) {
// Only on checkout page
if ( is_checkout() && ! is_wc_endpoint_url() ) {
// Here define your product categories
$product_categories = array( 't-shirts', 'posters' ); // Can be term names, term slugs or term ids
$taxonomy = 'product_cat'; // For WooCommerce product category terms (or 'product_tag' for WooCommerce product tag terms)
$payment_method = 'cheque'; // Here define your payment method id to be removed
$hide_payment = false;
// Loop through cart items
foreach ( WC()->cart->get_cart_contents() as $item ) {
if ( ! has_product_categories( $product_categories, $item['product_id'] ) ) {
$hide_payment = true;
}
}
if ( $hide_payment ) {
unset( $available_gateways[$payment_method] );
}
}
return $available_gateways;
}
代碼位于活動(dòng)子主題(或活動(dòng)主題)的 functions.php 文件中。測(cè)試和工作。

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
你能在你的代碼中改變你的條件嗎
if ( $unset == true ){
$index = 0;
foreach($available_gateways as $single){
if($single != "cheque"){
unset($available_gateways[$index]);
}
$index++;
}
}
- 2 回答
- 0 關(guān)注
- 227 瀏覽
添加回答
舉報(bào)