![](/img/trans.png)
[英]How to exclude Product Category ID from Shortcode Hook inside functions.php - WooCommerce
[英]Woocommerce conditional is_product() from functions.php
我想檢查是否是單個產品頁面,但這對單個產品頁面沒有影響:
if (! is_admin() && is_product() ) {
var_dump('is product'); // this has no effect in single product page
}
在 functions.php 中使用is_product()
是否有限制? 我怎樣才能做到這一點?
編輯:
為了避免var_dump
問題,這是我正在嘗試的最終代碼。 它嘗試將產品類型(簡單/可變)添加到主體 class:
add_action( 'woocommerce_after_single_product', function () {
if (! is_admin() && is_product() ) {
add_filter( 'body_class', function( $classes ) {
global $post;
$product = wc_get_product( $post->ID );
$tipo = $product->get_type();
return array_merge( $classes, array( $tipo ) );
});
}
}, 100 );
您不能在沒有鈎子的情況下直接使用此 function,因為您的functions.php
。php 文件包含在所有其他文件之前 - 主要是。 要使這件事起作用,您每次都需要像這樣使用鈎子:
add_action( 'template_redirect', 'template_redirect_action' );
function template_redirect_action() {
if ( ! is_admin() && is_product() ) {
add_filter( 'body_class', function ( $classes ) {
global $post;
$product = wc_get_product( $post->ID );
$tipo = $product->get_type();
return array_merge( $classes, array( $tipo ) );
} );
}
}
訪問產品頁面並檢查您的身體類別。
通過使用template_redirect
鈎子,您可以確保它在每個頁面上都執行。 否則,當使用僅在產品頁面上執行的產品掛鈎時,您的檢查將毫無意義。
測試了一個作品。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.