हम डोकन मल्टीवेंडर का उपयोग कर रहे हैं और विशिष्ट ऑर्डर स्थिति के साथ वेंडर ऑर्डर ओवरव्यू डैशबोर्ड से ऑर्डर छिपाना चाहते हैं। ऑर्डर ओवरव्यू में विक्रेताओं को ऑर्डर प्रदर्शित करने के लिए डोकन से पूरा कोड नीचे दिया गया है।

मैं एक विशिष्ट आदेश स्थिति के लिए आदेशों को फ़िल्टर करने में सक्षम हूं। नीचे दिए गए उदाहरण में हम "दायर" आदेश छिपाते हैं। यह काम कर रहा है। लेकिन हम वहां अन्य ऑर्डर की स्थिति को भी छिपाना चाहते हैं।

पहले से काम कर रहा है:

<?php
    foreach ($user_orders as $order) {
    if ($order->status !== "failed") {
  ?>

हम स्थिति के अनुसार निम्नलिखित क्रम को भी छिपाना चाहते हैं:

  • लंबित भुगतान
  • होल्ड पर
  • रद्द
  • अनुत्तीर्ण होना
  • रीडायरेक्ट
  • इंतज़ार कर रही
  • मैनुअल निर्णय
  • प्रारूप

उसके लिए, हम एक || . का उपयोग करते हैं और प्रत्येक आदेश स्थिति के लिए फ़िल्टर करने का प्रयास करें। लेकिन ये काम नहीं करता. कुछ नहीं होता है। क्या मेरे कोड में कोई सिंटैक्स त्रुटि है?

काम नहीं कर रहा:

foreach ($user_orders as $order) {
if ($order->status !== "failed" || $order->status !=="pending" || $order->status !=="cancelled") {
?>

डोकन ऑर्डर लिस्टिंग का पूरा कोड:

            <tbody>
                <?php
                foreach ($user_orders as $order) {
                if ($order->status !== "failed") {
                    ?>
                    <tr >
                        <td class="dokan-order-select">
                            <label for="cb-select-<?php echo esc_attr( $order->get_id() ); ?>"></label>
                            <input class="cb-select-items dokan-checkbox" type="checkbox" name="bulk_orders[]" value="<?php echo esc_attr( $order->get_id() ); ?>">
                        </td>
                            <?php if ( current_user_can( 'dokan_manage_order' ) ): ?>
                            <td class="dokan-order-action" width="17%" data-title="<?php esc_attr_e( 'Action', 'dokan-lite' ); ?>" >
                                <?php
                                do_action( 'woocommerce_admin_order_actions_start', $order );

                                $actions = array();

                                if ( dokan_get_option( 'order_status_change', 'dokan_selling', 'on' ) == 'on' ) {
                                    if ( in_array( dokan_get_prop( $order, 'status' ), array( 'pending', 'on-hold' ) ) ) {
                                        $actions['processing'] = array(
                                            'url' => wp_nonce_url( admin_url( 'admin-ajax.php?action=dokan-mark-order-processing&order_id=' . dokan_get_prop( $order, 'id' ) ), 'dokan-mark-order-processing' ),
                                            'name' => __( 'Processing', 'dokan-lite' ),
                                            'action' => "processing",
                                            'icon' => '<i class="fa fa-clock-o">&nbsp;</i>'
                                        );
                                    }

                                    if ( in_array( dokan_get_prop( $order, 'status' ), array( 'pending', 'on-hold', 'processing' ) ) ) {
                                        $actions['complete'] = array(
                                            'url' => wp_nonce_url( admin_url( 'admin-ajax.php?action=dokan-mark-order-complete&order_id=' . dokan_get_prop( $order, 'id' ) ), 'dokan-mark-order-complete' ),
                                            'name' => __( 'Complete', 'dokan-lite' ),
                                            'action' => "complete",
                                            'icon' => '<i class="fa fa-check">&nbsp;</i>'
                                        );
                                    }

                                }

                                $actions['view'] = array(
                                    'url' => wp_nonce_url( add_query_arg( array( 'order_id' => dokan_get_prop( $order, 'id' ) ), dokan_get_navigation_url( 'orders' ) ), 'dokan_view_order' ),
                                    'name' => __( 'View', 'dokan-lite' ),
                                    'action' => "view",
                                    'icon' => '<i class="fa fa-eye">&nbsp;</i>'
                                );

                                $actions = apply_filters( 'woocommerce_admin_order_actions', $actions, $order );

                                foreach ($actions as $action) {
                                    $icon = ( isset( $action['icon'] ) ) ? $action['icon'] : '';
                                    printf( '<a class="dokan-btn dokan-btn-default dokan-btn-sm tips" href="%s" data-toggle="tooltip" data-placement="top" title="%s">%s</a> ', esc_url( $action['url'] ), esc_attr( $action['name'] ), $icon );
                                }

                                do_action( 'woocommerce_admin_order_actions_end', $order );
                                ?>
                            </td>
                        <td class="dokan-order-id" data-title="<?php esc_attr_e( 'Order', 'dokan-lite' ); ?>" >
                            <?php if ( current_user_can( 'dokan_view_order' ) ): ?>
                                <?php echo '<a href="' . esc_url( wp_nonce_url( add_query_arg( array( 'order_id' => dokan_get_prop( $order, 'id' ) ), dokan_get_navigation_url( 'orders' ) ), 'dokan_view_order' ) ) . '"><strong>' . sprintf( __( 'Order %s', 'dokan-lite' ), esc_attr( $order->get_order_number() ) ) . '</strong></a>'; ?>
                            <?php else: ?>
                                <?php echo '<strong>' . sprintf( __( 'Order %s', 'dokan-lite' ), esc_attr( $order->get_order_number() ) ) . '</strong>'; ?>
                            <?php endif ?>
                        </td>
                            <td class="dokan-order-status" data-title="<?php esc_attr_e( 'Status', 'dokan-lite' ); ?>" >
                            <?php echo '<span class="dokan-label dokan-label-' . dokan_get_order_status_class( dokan_get_prop( $order, 'status' ) ) . '">' . dokan_get_order_status_translated( dokan_get_prop( $order, 'status' ) ) . '</span>'; ?>
                        </td>
                            <td class="dokan-order-date" data-title="<?php esc_attr_e( 'Date', 'dokan-lite' ); ?>" >
                            <?php
                            if ( '0000-00-00 00:00:00' == dokan_get_date_created( $order ) ) {
                                $t_time = $h_time = __( 'Unpublished', 'dokan-lite' );
                            } else {
                                $t_time    = get_the_time( 'Y/m/d g:i:s A', dokan_get_prop( $order, 'id' ) );
                                $gmt_time  = strtotime( dokan_get_date_created( $order ) . ' UTC' );
                                $time_diff = current_time( 'timestamp', 1 ) - $gmt_time;

                                if ( $time_diff > 0 && $time_diff < 24 * 60 * 60 ) {
                                    $h_time = sprintf( __( '%s ago', 'dokan-lite' ), human_time_diff( $gmt_time, current_time( 'timestamp', 1 ) ) );
                                } else {
                                    $h_time = get_the_time( 'Y/m/d', dokan_get_prop( $order, 'id' ) );
                                }
                            }

                            echo '<abbr title="' . esc_attr( dokan_date_time_format( $t_time ) ) . '">' . esc_html( apply_filters( 'post_date_column_time', dokan_date_time_format( $h_time, true ) , dokan_get_prop( $order, 'id' ) ) ) . '</abbr>';
                            ?>
                        </td>
                        <td class="dokan-order-total" data-title="<?php esc_attr_e( 'Order Total', 'dokan-lite' ); ?>" >
                            <?php echo $order->get_formatted_order_total(); ?>
                        </td>
                        <td class="dokan-order-earning" data-title="<?php esc_attr_e( 'Earning', 'dokan-lite' ); ?>" >
                            <?php echo wp_kses_post( wc_price( dokan()->commission->get_earning_by_order( $order ) ) ); ?>
                        </td>


                       
                        <?php endif ?>

                </tr>
                
                <?php } } ?> 
                
            </tbody>
1
Nik7 5 जिंदा 2021, 13:46

1 उत्तर

सबसे बढ़िया उत्तर

आप बस in_array & dokan_get_prop( $order, 'status' ) का उपयोग कर सकते हैं

foreach ( $user_orders as $order ) {
    // DEBUG INFO, remove afterwards
    $status = dokan_get_prop( $order, 'status' ); 
    echo 'Order status = ' . $status;

    // NOT in array
    if ( ! in_array( dokan_get_prop( $order, 'status' ), array( 'pending', 'on-hold', 'etc..' ) ) ) {
        // Continue
1
7uc1f3r 5 जिंदा 2021, 15:52
हैलो धन्यवाद! यह लगभग 100% काम करता है। लेकिन मुझे निम्न आदेश स्थिति में समस्या है। वे अभी भी डोकन वेंडर ऑर्डर ओवरव्यू में प्रदर्शित होते हैं। (पुनर्निर्देशित, प्रतीक्षा, मैन्युअल निर्णय, मसौदा) लेकिन, वे किस प्रकार की स्थिति हैं? WC दस्तावेज़ों में उनके बारे में कोई जानकारी नहीं है: docs.woocommerce.com/document/managing-orders foreach ($user_orders as $order) {// सरणी में नहीं अगर (! in_array(dokan_get_prop($order, 'status'), array('लंबित', 'ऑन-होल्ड', 'वेटिंग', ' विफल', 'रद्द', 'पुनर्निर्देशित', 'ड्राफ्ट', 'मैनुअल'))) {// जारी रखें
 – 
Nik7
5 जिंदा 2021, 15:40
लेकिन, वे किस प्रकार की स्थितियाँ हैं? डिफ़ॉल्ट स्थितियाँ हैं जो WooCommerce में पहले से मौजूद हैं, लेकिन अतिरिक्त प्लगइन्स नई स्थितियाँ जोड़ सकते हैं और नामकरण कुछ भी हो सकता है। इसलिए आगे बढ़ने से पहले डिबग करना सबसे अच्छा है, अन्यथा यह ठोस जानकारी के बिना सिर्फ 'अनुमान लगाना' है
 – 
7uc1f3r
5 जिंदा 2021, 16:01
धन्यवाद! क्या आप शायद मुझे एक छोटा संकेत दे सकते हैं कि इसे कैसे डिबग करें? मैं आदेश की स्थिति से आंतरिक नाम कहां देख सकता हूं?
 – 
Nik7
5 जिंदा 2021, 16:12