Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 WooCommerce-检查特定订单中的产品是否具有特色_Php_Woocommerce_Product_Orders - Fatal编程技术网

Php WooCommerce-检查特定订单中的产品是否具有特色

Php WooCommerce-检查特定订单中的产品是否具有特色,php,woocommerce,product,orders,Php,Woocommerce,Product,Orders,我试图显示一个特定字符串,该字符串与包含特色产品的特定加工订单列表有关 更准确地说,我想在累计满足两个条件时回显一条消息: 1订单状态为“正在处理”;及 2该订单中的所有产品均标记为特色产品 换句话说,一旦我手动将所有订购的产品标记为特色产品,我的用户帐户页面上就会出现一条特定的消息 到目前为止,我的代码尚未给出所需的结果: <?php foreach ( $order_summary as $order ) : $

我试图显示一个特定字符串,该字符串与包含特色产品的特定加工订单列表有关

更准确地说,我想在累计满足两个条件时回显一条消息:

1订单状态为“正在处理”;及

2该订单中的所有产品均标记为特色产品

换句话说,一旦我手动将所有订购的产品标记为特色产品,我的用户帐户页面上就会出现一条特定的消息

到目前为止,我的代码尚未给出所需的结果:

    <?php 

  foreach ( $order_summary as $order ) :

                            $order      = wc_get_order( $order->order_id );
                            $order_id       = $order->get_id();
                            $order_items    = get_products_for_order( $order_id );

                        if ( $order->get_status() == 'processing' ) {
                            if ( $order_items->is_featured() ) {
                                echo 'Something';
                            } else {
                                echo 'Something else';
                            }
                        }

    ?>
我不知道如何正确地检查各个订单中是否有特色产品

有什么想法吗?

get\u products\u for\u order函数返回一个产品数组。您需要在该阵列上运行一个foreach循环,并检查每个产品是否具有单独的功能

<?php 

    foreach ( $order_summary as $order ) {

        $order = wc_get_order( $order->order_id );
        $order_id = $order->get_id();
        $order_items = get_products_for_order( $order_id );

        if ( $order->get_status() == 'processing' ) {

            foreach( $order_items as $item ) {

                if ( $item->is_featured() ) {

                    echo 'Something';

                } else {

                    echo 'Something else';

                }
            }
        }
    }

?>
评论后编辑:

<?php 

    foreach ( $order_summary as $order ) {

        $order = wc_get_order( $order->order_id );
        $order_id = $order->get_id();
        $order_items = get_products_for_order( $order_id );

        if ( $order->get_status() == 'processing' ) {

            $featured = true;
            foreach( $order_items as $item ) {

                if ( !$item->is_featured() ) {
                    $featured = false;
                    break;
                }                     
            }

            if( $featured ) {
                echo 'Something';
            } else {
                echo 'Something else';
            }
        }
    }

?>

get_products_for_order函数返回什么?如果是一个产品数组,则需要在这些产品上运行foreach循环,然后再检查是否存在_featured@johnnyd23,我实际上正在对marketplace插件进行一些更改。get_products_for_order函数如下:公共静态函数get_products_for_order$order_id{global$wpdb;$vendor_products=array;$results=$wpdb->get_results从{$wpdb->prefix}pv_commission中选择产品_id,其中order_id={$order\u id}和状态!='reversed'和vendor\u id=.get\u current\u user\u id.GROUP BY product\u id;foreach$results作为$value{$id[]=$value->product\u id;}返回$id;}您能帮我吗?我弄不懂它的窍门。还有,@loictheaztec?我想我已经试过了,但它不能正常工作,也不能满足我的需求。我将尝试更清楚地说明我的目标:我只想在累计满足两个条件时回应一些东西:1订单状态为正在处理;2该订单中的所有产品均标记为特色产品。换句话说,一旦所有订购的产品都被我手动标记为特色产品,我的用户帐户页面上就会出现一条特定的消息。你的更新答案效果不太好,因为无论我是否将产品标记为特色产品,它都会回显“某物”,而不会回显“其他物”。@LoicTheAztec,你能帮个忙吗?没有像“获取产品”这样的功能