Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 处理商业上的产品类型_Php_Wordpress_Woocommerce - Fatal编程技术网

Php 处理商业上的产品类型

Php 处理商业上的产品类型,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,如果我尝试这样做,我真的很困惑如何在Woocommerce中正确获取产品类型: $product->get_type(); 它总是返回simple,即使产品是可变的,我也尝试了以下方法: $terms = get_the_terms($this->product->get_id(), 'product_type'); $product_type = (!empty($terms)) ? sanitize_title(current($terms)->name) : 's

如果我尝试这样做,我真的很困惑如何在Woocommerce中正确获取产品类型:

$product->get_type();
它总是返回
simple
,即使产品是可变的,我也尝试了以下方法:

$terms = get_the_terms($this->product->get_id(), 'product_type');
$product_type = (!empty($terms)) ? sanitize_title(current($terms)->name) : 'simple';
从上面的代码可以看出,它获取产品的分类法
product\u type
,如果存在,则返回分类法名称,否则返回
simple

但是它仍然返回
simple
,即使产品是可变的,我也不知道现在该怎么做,因为我从woocommerce钩子的参数获取产品对象,我不知道它是什么类型的产品,我需要进行此验证

如何在商业中恰当地获得产品类型

更新 根据要求,我将添加我使用的完整代码,这样您就可以更好地了解我试图实现的目标

基本上,我想在订单行项目管理编辑屏幕中将一个元字段显示为一列

add_action( 'woocommerce_admin_order_item_values', 'ebani_add_cost_price_column_order_value_admin_edit', 10, 3);
function ebani_add_cost_price_column_order_value_admin_edit( $product, $item, $item_id ) {
    
    $order = $item->get_order();
    
    ?>
    <td class="item_cost_price" width="1%" data-sort-value="<?php echo esc_attr( $order->get_item_subtotal( $item, false, true ) ); ?>">
        <div class="view">
            <?php
            if( ! is_null( $product ) ){
                
                //The right way to get the product type
                $terms = get_the_terms( $product->get_id(), 'product_type' );
                $product_type = ( !empty( $terms ) ) ? sanitize_title( current( $terms )->name ) : 'simple';
                echo $product_type;
                if( $product_type == 'variable' ) {
                    $variation_id = $item->get_variation_id();
                    echo wc_price( get_post_meta( $variation_id, 'variation_cost', true ), array( 'currency' => $order->get_currency() ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
                }elseif( $product_type == 'simple' ) {
                    echo wc_price( get_post_meta( $item->get_product_id(), 'cost_price', true ), array( 'currency' => $order->get_currency() ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
                }else{
                    echo "No aplica";
                }
            } else {
                echo 'No aplica';
            }
            ?>
        </div>
    </td>
    <?php
}
添加操作('woocmerce\u admin\u order\u item\u values'、'ebani\u add\u cost\u price\u column\u order\u value\u admin\u edit',10,3);
函数ebani\u add\u cost\u price\u column\u order\u value\u admin\u edit($product、$item、$item\u id){
$order=$item->get_order();
?>

我不太明白
get\u的用法。这些术语应该足够了

//添加标题
功能操作\商业\管理\订单\项目\标题($order){
呼应‘我的头衔’;
}
添加操作('woocommerce\u admin\u order\u item\u Header','action\uWooCommerce\u admin\u order\u item\u Header',10,1);
//添加内容
功能操作\u商业\u管理\u订单\u项目\u值($product,$item,$item\u id){
$order=$item->get_order();
?>

我不太明白
get\u的用法。这些术语应该足够了

//添加标题
功能操作\商业\管理\订单\项目\标题($order){
呼应‘我的头衔’;
}
添加操作('woocommerce\u admin\u order\u item\u Header','action\uWooCommerce\u admin\u order\u item\u Header',10,1);
//添加内容
功能操作\u商业\u管理\u订单\u项目\u值($product,$item,$item\u id){
$order=$item->get_order();
?>

“当我从woocommerce钩子的参数中获取产品对象时”它是关于什么的?你能将代码添加到你的问题中吗?@7uc1f3r我用完整的代码更新了问题,以提供更好的上下文,但钩子是
woocommerce\u admin\u order\u item\u value
“当我从woocommerce钩子的参数中获取产品对象时”它是关于什么钩子的?你能把这个代码添加到你的问题中吗?@7uc1f3r我用完整的代码更新了这个问题以提供更好的上下文,但是钩子是
woocmerce\u admin\u order\u item\u values
是的,这基本上就是我要做的,这里的问题是
$product->get\u type()
始终返回
simple
即使产品有变化,您也可以查看此帖子,了解为什么我尝试了另一种方法,但在运行上述代码时也不起作用->我看到了不同的产品类型?抱歉,由于某些原因,它现在开始工作了!另一件需要注意的事情是,我使用的产品时间s
variarion
not
variable
我编辑了答案。
$product->get_type();
现在工作正常,不知道为什么以前工作不正常,我仍然很困惑,但现在它工作正常了,所以没问题。谢谢!是的,这基本上就是我要做的,这里的问题是
$product->get_type()
始终返回
simple
即使产品有变化,您也可以查看此帖子,了解为什么我尝试了另一种方法,但在运行上述代码时也不起作用->我看到了不同的产品类型?抱歉,由于某些原因,它现在开始工作了!另一件需要注意的事情是,我使用的产品时间s
variarion
not
variable
我编辑了答案。
$product->get_type();
现在工作正常,不知道为什么以前工作不正常,我仍然很困惑,但现在它工作正常,所以没问题。谢谢!