簡體   English   中英

Woocommerce 來自函數的條件 is_product().php

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM