woocommerce php,WooCommerce 教程:条件逻辑 – 标签,示例和PHP - WooCommerce 微站

WooCommerce 和 WordPress 的条件标签(也可以使用 “WooCommerce 和 WordPress 条件逻辑”)可以在您的 functions.php 中使用,以根据特定条件显示内容。例如,您可以在单个 PHP 函数中显示不同类别的不同内容。

您可以在这里找到 WooCommerce 条件标签列表和 WordPress 条件标签。我不认为粘贴它们是值得的,所以请使用这两个链接作为参考 – 事实上,在这个博客文章中,我想给您举例,可能是您学习 WooCommerce 定制的最好方法。

您在 WooCommerce 单一产品页面上工作吗?

WooCommerce 中的单一产品页面的好东西是 WordPress 知道他们是 “帖子”。所以,您可以使用 is_single。单个产品页面的挂钩列表可以在这里找到。

PHP:仅在单个产品页面上执行某些操作

add_action( 'woocommerce_before_main_content', 'bbloomer_single_product_pages' );

function bbloomer_single_product_pages() {

if ( is_product() ) {

echo 'Something';

} else {

echo 'Something else';

}

}

PHP:如果产品 ID = XYZ,请执行某些操作

add_action( 'woocommerce_after_single_product_summary', 'bbloomer_single_product_ID' );

function bbloomer_single_product_ID() {

if ( is_single( '17' ) ) {

echo 'Something';

} elseif ( is_single( '56' ) ) {

echo 'Something else';

}

}

PHP:如果产品属于类别,请执行某些操作

add_action( 'woocommerce_after_single_product_summary', 'bbloomer_single_category_slug' );

function bbloomer_single_category_slug() {

if ( has_term( 'chairs', 'product_cat' ) ) {

echo 'Something';

} elseif ( has_term( 'tables', 'product_cat' ) ) {

echo 'Something else';

}

}

PHP:如果产品属于标签,请执行某些操作

add_action( 'woocommerce_after_single_product_summary', 'bbloomer_single_tag_slug' );

function bbloomer_single_tag_slug() {

if ( has_term( 'blue', 'product_tag' ) ) {

echo 'Something';

} elseif ( has_term( 'red', 'product_tag' ) ) {

echo 'Something else';

}

}

PHP:如果产品出售,做某事

add_action( 'woocommerce_after_single_product_summary', 'bbloomer_single_on_sale' );

function bbloomer_single_on_sale() {

if ( $product->is_on_sale() ) {

// do something

}

}

PHP:做一些事情,如果产品简单,变量,外部…

add_action( 'woocommerce_after_single_product_summary', 'bbloomer_single_product_type' );

function bbloomer_single_product_type() {

if( $product->is_type( 'simple' ) ){

// do something

} elseif( $product->is_type( 'variable' ) ){

// do something

} elseif( $product->is_type( 'external' ) ){

// do something

} elseif( $product->is_type( 'grouped' ) ){

// do something

}

}

PHP:如果产品可下载,请执行某些操作

add_action( 'woocommerce_after_single_product_summary', 'bbloomer_single_downloadable' );

function bbloomer_single_downloadable() {

if( $product->is_downloadable() ){

// do something

}

}

PHP:只在相关产品上做某事

相关产品由 “循环” 生成。有时您可能只想在单一产品页面上使用 PHP(不包括相关的)或反之亦然。

下面的代码段仅在单个产品页面上隐藏,仅在相关产品部分。

add_filter( 'woocommerce_variable_price_html', 'bbloomer_remove_variation_price', 10, 2 );

function bbloomer_remove_variation_price( $price ) {

global $woocommerce_loop;

if ( is_product() && $woocommerce_loop['name'] == 'related' ) {

$price = '';

}

return $price;

}

2. Are you working on the WooCommerce Shop/Category Page?

You can find all the shop/archive WooCommerce hooks here. Let’s see how to use conditional logic on these “loop” pages:

PHP: do something on the Shop page only

add_action( 'woocommerce_before_main_content', 'bbloomer_loop_shop' );

function bbloomer_loop_shop() {

if ( is_shop() ) {

echo 'This will show on the Shop page';

} else {

echo 'This will show on all other Woo pages';

}

}

PHP: do something on each product on the loop pages

add_action( 'woocommerce_after_shop_loop_item', 'bbloomer_loop_per_product' );

function bbloomer_loop_per_product() {

if ( has_term( 'chairs', 'product_cat' ) ) {

echo 'Great chairs!';

} elseif ( has_term( 'tables', 'product_cat' ) ) {

echo 'Awesome tables!';

}

}

PHP: do something on category pages only

add_action( 'woocommerce_before_main_content', 'bbloomer_loop_cat' );

function bbloomer_loop_cat() {

if ( is_product_category() ) {

echo 'This will show on every Cat pages';

} else {

echo 'This will show on all other Woo pages';

}

}

PHP: do something based on category name

add_action( 'woocommerce_before_main_content', 'bbloomer_loop_cat_slug' );

function bbloomer_loop_cat_slug() {

if ( is_product_category( 'books' ) ) {

echo 'This will show on the Books Cat page';

} elseif ( is_product_category( 'chairs' ) ) {

echo 'This will show on the Chairs Cat page';

}

}

PHP: do something on tag pages only

add_action( 'woocommerce_before_main_content', 'bbloomer_loop_tag' );

function bbloomer_loop_tag() {

if ( is_product_tag() ) {

echo 'This will show on every Cat pages';

} else {

echo 'This will show on all other Woo pages';

}

}

PHP: do something based on tag name

add_action( 'woocommerce_before_main_content', 'bbloomer_loop_tag_slug' );

function bbloomer_loop_tag_slug() {

if ( is_product_tag( 'red' ) ) {

echo 'This will show on the Red Tag page';

} elseif ( is_product_tag( 'yellow' ) ) {

echo 'This will show on the Yellow Tag page';

}

}

3. Are you working on WooCommerce Pages?

PHP: do something if on a WooCommerce page (excluding cart/checkout)

add_action( 'woocommerce_before_main_content', 'bbloomer_woo_page' );

function bbloomer_woo_page() {

if ( is_woocommerce() ) {

echo 'This will show on Woo pages';

} else {

echo 'This will show on WP pages';

}

}

PHP: do something if on Cart/Checkout

add_action( 'woocommerce_sidebar', 'bbloomer_cart_checkout' );

function bbloomer_cart_checkout() {

if ( is_cart() ) {

echo 'This will show on the Cart sidebar';

} elseif ( is_checkout() ) {

echo 'This will show on the Checkout sidebar';

}

}

4. Are you working on the WooCommerce Cart/Checkout?

PHP: do something if WooCommerce Cart/Checkout has Product ID

function bbloomer_find_id_in_cart() {

global $woocommerce;

foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values) {

$product = $values['data'];

if ( $product->id == 123 ) {

// do something

}

}

}

如何添加此代码?

您可以将 PHP 代码片段放置在主题或子主题的 functions.php 文件的底部(如果是 CSS 代码,请添加到主题的 style.css 文件底部),修改之前建议先备份原始文件,若出现错误请先删除此代码。

此代码是否可用?

如需帮助或是您有更好的方案想分享?请到薇晓朵 WooCommerce 中文论坛留言告知,我们希望可以帮到更多国内的 WooCommerce 用户也希望您的参与。

文章没看懂?代码不会用?需要帮助你可以去论坛提问自助服务台

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值