如何在unctions.php中使用WooCommerce$PRODUCT->GET_ATTRIBUTE?(如果有的话)

时间:2020-09-07 作者:A.K.

我试图使用:if($product->;get\\u attribute(\'pa\\u orientation\')==“vertical”){//do something}

在我的wordpress函数中。php

目标是在属性匹配时加载产品的样式表。

上面的代码不起作用。我怀疑这可能导致未设置函数的非woocommerce页面出错,或者我的条件类型(数组?)不正确。是否有人知道$product->;get\\u属性可以在函数中以这种方式使用。php

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

get_attribute() 是一种WC_Product 反对,所以$product 需要是的实例WC_Product 表示当前产品的。您的代码本身无法工作,因为$product 可能未定义。

所以你需要定义$product, 但您还需要确定它应该定义为哪个产品。在您的情况下,在查看单个产品页面时,它需要是当前产品。您可以通过以下方式执行此操作:

确定您是否在单个产品页上WC_Product 页面所针对的产品的实例对于#1,使用is_product(), 和供#2使用get_queried_object() 要获取该产品的post对象,请与wc_get_product() 获取WC_Product 该产品的对象。

总的来说是这样的:

add_action(
    \'wp_enqueue_scripts\',
    function() {
        if ( function_exists( \'is_product\' ) && is_product() ) {
            $post    = get_queried_object();
            $product = wc_get_product( $post );

            if ( \'vertical\' === $product->get_attribute( \'pa_orientation\' ) ) {
                // Enqueue your stylesheet.
            }
        }
    }
);
注意,我添加了一个检查function_exists( \'is_product\' ). 这个is_product() 该功能是WooCommerce功能,因此如果WooCommerce被停用,您的网站将崩溃。使用前检查功能可防止出现这种情况。

相关推荐

Functions.php上未定义$_GET和&_REQUEST索引

我最近尝试学习为我的自定义主题创建一个主题选项页面,这是按照stackoverflow和其他资源的教程进行的。但脚本显示错误if ($_GET[\'page\'] == basename(__FILE__)) { if (\'save\' == $_REQUEST[\'formaction\']) { foreach ($options as $value) { if( isset( $_REQUEST[ $value[\'id\']