Fügen Sie den Status benutzerdefinierter Bestellungen in die Verkaufsberichte für Woocommerce-Bestellungen ein

Lesezeit: 4 Minuten

Fugen Sie den Status benutzerdefinierter Bestellungen in die Verkaufsberichte fur
jatgirl

Ich habe einen benutzerdefinierten Bestellstatus – In Bearbeitung. Der Code, den ich dafür habe, ist unten. Es funktioniert großartig – aber die Bestellungen mit diesem benutzerdefinierten Bestellstatus werden nicht in die standardmäßigen Woo-Verkaufsberichte oder das Woocommerce-Status-Dashboard-Widget aufgenommen.

Könnte mir bitte jemand helfen und einen Blick darauf werfen, wie ich dieses Snippet unten ergänzen kann, damit die $ aus diesem benutzerdefinierten Bestellstatus “In Bearbeitung” im Woo-Verkaufsbericht $ widergespiegelt werden.

// 1 New order status AFTER woo 2.2 IN PROGRESS
add_action( 'init', 'register_my_new_order_statuses' );
function register_my_new_order_statuses() {
    register_post_status( 'wc-in-progress', array(
        'label'                     => _x( 'In Progress', 'Order status', 'woocommerce' ),
        'public'                    => true,
        'exclude_from_search'       => false,
        'show_in_admin_all_list'    => true,
        'show_in_admin_status_list' => true,
        'label_count'               => _n_noop( 'In Progress <span class="count">(%s)</span>', 'In Progress<span class="count">(%s)</span>', 'woocommerce' )
    ) );
}
add_filter( 'wc_order_statuses', 'my_new_wc_order_statuses' );
// Register in wc_order_statuses.
function my_new_wc_order_statuses( $order_statuses ) {
    $order_statuses['wc-in-progress'] = _x( 'In Progress', 'Order status', 'woocommerce' );
    return $order_statuses;
}

/*
 * 2 CHANGE STATUSES ORDER IN DROPDOWN LIST
 * @param array $wc_statuses_arr Array of all order statuses on the website
 */
function change_statuses_order( $wc_statuses_arr ){

    $new_statuses_arr = array(
        'wc-processing' => $wc_statuses_arr['wc-processing'], // 1
        'wc-in-progress' => $wc_statuses_arr['wc-in-progress'], // 2      
        'wc-completed' => $wc_statuses_arr['wc-completed'], // 3
        'wc-cancelled' => $wc_statuses_arr['wc-cancelled'], // 4
        'wc-refunded' => $wc_statuses_arr['wc-refunded'], // 5
        'wc-failed' => $wc_statuses_arr['wc-failed'], // 6
        'wc-pending' => $wc_statuses_arr['wc-pending'], // 7
        'wc-on-hold' => $wc_statuses_arr['wc-on-hold'] // 8
    );

    return $new_statuses_arr;
}

add_filter( 'wc_order_statuses', 'change_statuses_order' );

/** 3 ADD COLOR TO IN PROGRESS BUTTON **/

add_action('admin_head', 'styling_admin_order_list' );
function styling_admin_order_list() {
    global $pagenow;
    if( $_GET['post_type'] == 'shop_order' && $pagenow == 'edit.php'):

    // HERE below set your custom status
    $order_status="In Progress"; // <==== HERE
    ?>
    <style>
        .order-status.status-<?php echo sanitize_title( $order_status ); ?> {
            background: #cc0099;
            color: #ffffff;
        }
    </style>
    <?php
    endif;
}

Fugen Sie den Status benutzerdefinierter Bestellungen in die Verkaufsberichte fur
LoicTheAztec

Sie können die folgende Hook-Funktion verwenden, die Ihren “benutzerdefinierten Status” zu Bestellberichten hinzufügt:

add_filter( 'woocommerce_reports_order_statuses', 'include_custom_order_status_to_reports', 20, 1 );
function include_custom_order_status_to_reports( $statuses ){
    // Adding the custom order status to the 3 default woocommerce order statuses
    return array( 'processing', 'in-progress', 'completed', 'on-hold' );
}

Code goes in function.php file of your active child theme (or active theme). Getestet und funktioniert.


Es gibt einen generierten Fehler in Ihrer 3. Funktion im Zusammenhang mit $_GET['post_type'] == 'shop_order'… Stattdessen können Sie es folgendermaßen ändern:

// 3. ADD COLOR TO IN PROGRESS BUTTON
add_action('admin_head', 'styling_admin_order_list' );
function styling_admin_order_list() {
    global $pagenow, $post;

    if( $pagenow != 'edit.php') return; // Exit
    if( get_post_type($post->ID) != 'shop_order' ) return; // Exit

    // HERE below set your custom status
    $order_status="In Progress"; // <==== HERE
    ?>
    <style>
        .order-status.status-<?php echo sanitize_title( $order_status ); ?> {
            background: #cc0099;
            color: #ffffff;
        }
    </style>
    <?php
}

Es wird diesen kleinen Fehler vermeiden, da post_type befindet sich nicht in der URL von Auftragsbearbeitungsseiten (Ich weiß, dass es meine Schuld ist, da dies der Code einer meiner Antworten war)

  • Exzellent ! Es funktioniert perfekt – und die Überarbeitung des #3-Codes ist auch großartig – vielen Dank – Sie haben mir wirklich geholfen, meinen Shop, meinen Prozess und meine Berichterstattung mit diesen 2 Snippets zu verbessern – ich bin sehr dankbar!

    – Yatgirl

    1. April 2018 um 3:45 Uhr

  • @yatgirl Willkommen… Sie können sogar Ihren benutzerdefinierten Status in der Backend-Bestellliste im Auswahlfeld für Massenaktionen aktivieren

    – LoicTheAztec

    1. April 2018 um 16:06 Uhr

  • Die Korrektur der 3. Funktion, die Sie mir gegeben haben, verursacht einen PHP-Fehler in meinem PHP-Fehlerprotokoll. insbesondere die Zeile: if( get_post_type($post->ID) != ‘shop_order’ ) return; // Ausgang. Der Fehler in meinem Protokoll ist PHP Notice: Trying to get property of non-object in /home/xxx/public_html/wp-content/plugins/code-snippets/php/snippet-ops.php(469) : eval()’ d-Code in Zeile 48. Ich frage mich, ob es eine Korrektur gibt, die ich am Code vornehmen kann, um den Fehler zu stoppen. Angeblich liegt es an -> @LoicTheAztec

    – Yatgirl

    4. Juni 2021 um 18:28 Uhr


1003950cookie-checkFügen Sie den Status benutzerdefinierter Bestellungen in die Verkaufsberichte für Woocommerce-Bestellungen ein

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy