Woocommerce条件是functions.php中的_product()

Woocommerce条件是functions.php中的_product(),php,wordpress,woocommerce,conditional-statements,Php,Wordpress,Woocommerce,Conditional Statements,我想检查是否为单产品页,但这对单产品页没有影响: 如果(!is_admin()&&is_product()){ var_dump('is product');//这在单个产品页面中无效 } 在functions.php中使用Is_product()是否有限制?我怎样才能做到这一点 编辑: 为了避免var\u dump问题,这是我正在尝试的最后一个代码。它尝试将产品类型(简单/变量)添加到body类: add_action( 'woocommerce_after_single_product',

我想检查是否为单产品页,但这对单产品页没有影响:

如果(!is_admin()&&is_product()){
var_dump('is product');//这在单个产品页面中无效
}
在functions.php中使用
Is_product()
是否有限制?我怎样才能做到这一点

编辑:

为了避免
var\u dump
问题,这是我正在尝试的最后一个代码。它尝试将产品类型(简单/变量)添加到body类:

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 ); 

如果没有钩子,您不能直接使用此函数,因为您的
functions.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\u redirect
hook,您可以确保它在每个页面上执行。否则,当使用只在产品页面上执行的产品挂钩时,您的检查将毫无意义


测试了一个工程。

请显示完整代码。在functions.php中不使用钩子是不行的,因为当包含function.php时,函数不可用。谢谢你的回答(很抱歉,我认为这是目前完整的代码)。不管怎样,它为我指明了正确的方向。你能建议我应该从哪个操作中挂钩吗?尝试:
add\u操作('woocommerce\u在单个产品之后,'function(){//etc},100)
不起作用。取决于你想检查你是否在产品页面上。在钩子里倾倒一些东西通常是不起作用的(取决于最后的钩子)。请始终显示完整的代码。一个问题很重要。