亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Woocommerce的自定義訂單狀態的管理菜單中添加計數?

如何在Woocommerce的自定義訂單狀態的管理菜單中添加計數?

PHP
慕蓋茨4494581 2022-08-05 15:32:26
因此,我添加了一個名為“等待發貨”的自定義訂單狀態,并且我想將這些訂單包含在管理左側WooCommerce下拉菜單下顯示的訂單計數中。此處顯示的唯一訂單是具有“正在處理”狀態的訂單。有什么幫助嗎,伙計們?提前非常感謝。
查看完整描述

3 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

我找到了一個公平的解決方案。這有點笨拙...但它的工作原理


首先,將子菜單添加到WooCommerce菜單:


add_action( 'admin_menu', 'custom_status_menu', 50 );

function custom_status_menu(){

    $status_page = add_submenu_page( 'woocommerce', 'Awaiting Shipment', __( 'Awaiting', 'woocommerce' ), 'manage_woocommerce', 'wc-awaiting', 'awaiting_orders_page' );

}

然后,添加要在單擊此菜單項時運行的函數。此功能(這里是黑客部分)會將用戶重定向到常規訂單頁面,僅顯示請求的狀態。(為了測試我使用了“已取消”狀態,您應該更改)


function awaiting_orders_page(){

    header('Location: /wp-admin/edit.php?post_status=wc-cancelled&post_type=shop_order');

}

最后,添加計數器。同樣在這里,我使用了“等待”狀態,將其更改為您創建的狀態


add_action( 'admin_head', 'add_custom_status_count');

function add_custom_status_count(){

    global $submenu;

    $order_count = wc_orders_count( 'awaiting' );

    foreach ( $submenu['woocommerce'] as $key => $menu_item ) {

        if ( 0 === strpos( $menu_item[0], 'Awaiting' ) ) {

            $submenu['woocommerce'][ $key ][0] .= ' <span class="awaiting-mod update-plugins count-' . esc_attr( $order_count ) . '"><span class="processing-count">' . number_format_i18n( $order_count ) . '</span></span>'; // WPCS: override ok.

            break;

        }

    }

}


查看完整回答
反對 回復 2022-08-05
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

這是解決方案


function add_order_status_count(){

    global $submenu;

    $order_count = wc_orders_count( 'awaiting-shippment' );

    foreach ( $submenu['woocommerce'] as $key => $menu_item ) {

        if ( 0 === strpos( $menu_item[0], 'Orders' ) ) {

            $submenu['woocommerce'][ $key ][0] .= ' <span class="awaiting-mod update-plugins count-' . esc_attr( $order_count ) . '"><span class="processing-count">' . number_format_i18n( $order_count ) . '</span></span>'; // WPCS: override ok.

            break;

        }

    }

}

add_action( 'admin_head', 'add_order_status_count');

如果您想禁用Woocommerce處理訂單狀態計數


function remove_processing_order_count() {

    return false;

}

add_filter( 'woocommerce_include_processing_order_count_in_menu', 'remove_processing_order_count' );


查看完整回答
反對 回復 2022-08-05
?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

如果你想完全替換默認計數器,下面的代碼段應該符合你的需求:


<?php

add_action( 'admin_head', 'usrlnd_action_change_order_counter' ), 999 );

function usrlnd_action_change_order_counter() {

    global $submenu;


    if ( isset( $submenu['woocommerce'] ) ) {

        // Add count if user has access.

        if ( apply_filters( 'woocommerce_include_processing_order_count_in_menu', true ) && current_user_can( 'manage_woocommerce' ) ) {

            // my custom status slug is `new`

            $order_count     = wc_orders_count( 'new' );

            $old_order_count = wc_processing_order_count();


            if ( $order_count ) {

                foreach ( $submenu['woocommerce'] as $key => $menu_item ) {

                    if ( 0 === strpos( $menu_item[0], _x( 'Orders', 'Admin menu name', 'woocommerce' ) ) ) {

                        $old  = ' <span class="awaiting-mod update-plugins count-' . esc_attr( $old_order_count ) . '"><span class="processing-count">' . number_format_i18n( $old_order_count ) . '</span></span>';

                        $new  = ' <span class="awaiting-mod update-plugins count-' . esc_attr( $order_count ) . '"><span class="processing-count">' . number_format_i18n( $order_count ) . '</span></span>';

                        $item = $submenu['woocommerce'][ $key ][0];

                        if ( strpos( $item, $old ) !== false ) {

                            // replace old counter with new

                            $item = str_replace( $old, $new, $item );

                        } else {

                            // there is no counter, just add the new

                            $item .= $new;

                        }


                        $submenu['woocommerce'][ $key ][0] = $item;

                        break;

                    }

                }

            }

        }

    }

}

使用Woocommerce 4.2.2進行測試。


查看完整回答
反對 回復 2022-08-05
  • 3 回答
  • 0 關注
  • 199 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號