php 代码 - woocommerce 忽略产品
php code - woocommerce ignore product
抱歉,我是 php 的新手,但我想知道是否有人可以为我指明正确的方向。我创建了一个功能完美的函数。它用于 woocommerce 并且仅针对特定类别,删除 'add to cart' 按钮并替换为 link 到另一个页面。此类别中有一个产品我需要忽略其功能。工作代码是:
function fishing_buttons(){
// die early if we aren't on a product
if ( ! is_product() ) return;
$product = get_product();
if ( has_term( 'fishing', 'product_cat' ) ){
// removing the purchase buttons
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
remove_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 );
remove_action( 'woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30 );
remove_action( 'woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30 );
remove_action( 'woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30 );
// adding our own custom text
add_action( 'woocommerce_after_shop_loop_item', 'fishing_priceguide' );
add_action( 'woocommerce_single_product_summary', 'fishing_priceguide', 30 );
add_action( 'woocommerce_simple_add_to_cart', 'fishing_priceguide', 30 );
add_action( 'woocommerce_grouped_add_to_cart', 'fishing_priceguide', 30 );
add_action( 'woocommerce_variable_add_to_cart', 'fishing_priceguide', 30 );
add_action( 'woocommerce_external_add_to_cart', 'fishing_priceguide', 30 );} // fishing_buttons
add_action( 'wp', 'fishing_buttons' );
/**
* Our custom button
*/
function fishing_priceguide(){
echo do_shortcode( '[pl_button type="fish" link="http://localhost:8888/fish/fishing-price-guide/"]View our price guide[/pl_button]' );
} // fishing_priceguide
我想忽略的产品 ID 是 1268(即保留添加到购物车按钮)。是否可以在 if 语句中包含 'and' 条件?我试过了
if ( has_term( 'fishing', 'product_cat' ) && product_id != '1268' ){
但是一直没有成功
product
没有任何意义。 $product
是一个对象,产品 ID 存储为 class 变量 $product->id
。因此你的代码应该是:
if ( has_term( 'fishing', 'product_cat' )&& $product->id != '1268' )
另外 fishing_buttons
附在什么钩子上?您可能只使用 global $product
但不需要再次检索产品。
function fishing_buttons(){
global $product;
if ( has_term( 'fishing', 'product_cat' )&& $product->id != '1268' ){
// your stuff
}
}
add_action( 'woocommerce_before_shop_loop_item', 'fishing_buttons' );
抱歉,我是 php 的新手,但我想知道是否有人可以为我指明正确的方向。我创建了一个功能完美的函数。它用于 woocommerce 并且仅针对特定类别,删除 'add to cart' 按钮并替换为 link 到另一个页面。此类别中有一个产品我需要忽略其功能。工作代码是:
function fishing_buttons(){
// die early if we aren't on a product
if ( ! is_product() ) return;
$product = get_product();
if ( has_term( 'fishing', 'product_cat' ) ){
// removing the purchase buttons
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
remove_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 );
remove_action( 'woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30 );
remove_action( 'woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30 );
remove_action( 'woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30 );
// adding our own custom text
add_action( 'woocommerce_after_shop_loop_item', 'fishing_priceguide' );
add_action( 'woocommerce_single_product_summary', 'fishing_priceguide', 30 );
add_action( 'woocommerce_simple_add_to_cart', 'fishing_priceguide', 30 );
add_action( 'woocommerce_grouped_add_to_cart', 'fishing_priceguide', 30 );
add_action( 'woocommerce_variable_add_to_cart', 'fishing_priceguide', 30 );
add_action( 'woocommerce_external_add_to_cart', 'fishing_priceguide', 30 );} // fishing_buttons
add_action( 'wp', 'fishing_buttons' );
/**
* Our custom button
*/
function fishing_priceguide(){
echo do_shortcode( '[pl_button type="fish" link="http://localhost:8888/fish/fishing-price-guide/"]View our price guide[/pl_button]' );
} // fishing_priceguide
我想忽略的产品 ID 是 1268(即保留添加到购物车按钮)。是否可以在 if 语句中包含 'and' 条件?我试过了
if ( has_term( 'fishing', 'product_cat' ) && product_id != '1268' ){
但是一直没有成功
product
没有任何意义。 $product
是一个对象,产品 ID 存储为 class 变量 $product->id
。因此你的代码应该是:
if ( has_term( 'fishing', 'product_cat' )&& $product->id != '1268' )
另外 fishing_buttons
附在什么钩子上?您可能只使用 global $product
但不需要再次检索产品。
function fishing_buttons(){
global $product;
if ( has_term( 'fishing', 'product_cat' )&& $product->id != '1268' ){
// your stuff
}
}
add_action( 'woocommerce_before_shop_loop_item', 'fishing_buttons' );