WooCommerce 教程:条件逻辑 – 标签,示例和 PHP
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 用户也希望您的参与。
版权声明:本站内容源自互联网,如有内容侵犯了你的权益,请联系删除相关内容。