簡體   English   中英

顯示 Woocommerce 我的帳戶訂單而不是儀表板

[英]Displays Woocommerce My Account Orders instead of Dashboard

我正在嘗試讓 url.com/my-account 或簡碼 [woocommerce_my_account] 顯示訂單,而不是顯示“Hello User(not user)?”的儀表板。

我唯一擁有的是在登錄后重定向到訂單而不是儀表板,但是然后我去 /my-account 仍然顯示我不想要的儀表板。

我發現最接近我想要的代碼是......

function woocommerce_orders() {
    $user_id = get_current_user_id();
    if ($user_id == 0) {
         return do_shortcode('[woocommerce_my_account]'); 
    }else{
        ob_start();
        wc_get_template( 'myaccount/my-orders.php', array(
            'current_user'  => get_user_by( 'id', $user_id),
            'order_count'   => $order_count
         ) );
        return ob_get_clean();
    }

}
add_shortcode('woocommerce_orders', 'woocommerce_orders');

但是,如果沒有下訂單,則顯示為空白(不顯示“尚未下訂單。”帶有商店按鈕)並且我的帳戶導航側邊欄不顯示。 我是否必須為此制作一個自定義頁面模板才能添加到 woocommerce 帳戶導航側邊欄中?

編輯:如果我使用 orders.php 而不是 my-orders.php 那么我可以獲得“尚未下訂單”。 但仍然沒有側邊欄導航

我正在嘗試使 url.com/my-account 或短代碼 [woocommerce_my_account] 顯示訂單,而不是顯示“您好用戶(不是用戶)?”的儀表板。

我唯一擁有的是登錄后重定向到訂單而不是儀表板,但我然后轉到 /my-account 仍然顯示我不想要的儀表板。

我發現的最接近我想要的代碼是......

function woocommerce_orders() {
    $user_id = get_current_user_id();
    if ($user_id == 0) {
         return do_shortcode('[woocommerce_my_account]'); 
    }else{
        ob_start();
        wc_get_template( 'myaccount/my-orders.php', array(
            'current_user'  => get_user_by( 'id', $user_id),
            'order_count'   => $order_count
         ) );
        return ob_get_clean();
    }

}
add_shortcode('woocommerce_orders', 'woocommerce_orders');

但是,如果沒有下訂單,則顯示為空白(不顯示“尚未下訂單。”帶有商店按鈕)並且我的帳戶導航側欄不顯示。 我是否必須為此創建一個自定義頁面模板才能添加到 woocommerce 帳戶導航側欄中?

編輯:如果我使用 orders.php 而不是 my-orders.php 那么我能夠得到“尚未下訂單”。 但仍然沒有側邊欄導航

我正在嘗試使 url.com/my-account 或短代碼 [woocommerce_my_account] 顯示訂單,而不是顯示“您好用戶(不是用戶)?”的儀表板。

我唯一擁有的是登錄后重定向到訂單而不是儀表板,但我然后轉到 /my-account 仍然顯示我不想要的儀表板。

我發現的最接近我想要的代碼是......

function woocommerce_orders() {
    $user_id = get_current_user_id();
    if ($user_id == 0) {
         return do_shortcode('[woocommerce_my_account]'); 
    }else{
        ob_start();
        wc_get_template( 'myaccount/my-orders.php', array(
            'current_user'  => get_user_by( 'id', $user_id),
            'order_count'   => $order_count
         ) );
        return ob_get_clean();
    }

}
add_shortcode('woocommerce_orders', 'woocommerce_orders');

但是,如果沒有下訂單,則顯示為空白(不顯示“尚未下訂單。”帶有商店按鈕)並且我的帳戶導航側欄不顯示。 我是否必須為此創建一個自定義頁面模板才能添加到 woocommerce 帳戶導航側欄中?

編輯:如果我使用 orders.php 而不是 my-orders.php 那么我能夠得到“尚未下訂單”。 但仍然沒有側邊欄導航

我正在嘗試使 url.com/my-account 或短代碼 [woocommerce_my_account] 顯示訂單,而不是顯示“您好用戶(不是用戶)?”的儀表板。

我唯一擁有的是登錄后重定向到訂單而不是儀表板,但我然后轉到 /my-account 仍然顯示我不想要的儀表板。

我發現的最接近我想要的代碼是......

function woocommerce_orders() {
    $user_id = get_current_user_id();
    if ($user_id == 0) {
         return do_shortcode('[woocommerce_my_account]'); 
    }else{
        ob_start();
        wc_get_template( 'myaccount/my-orders.php', array(
            'current_user'  => get_user_by( 'id', $user_id),
            'order_count'   => $order_count
         ) );
        return ob_get_clean();
    }

}
add_shortcode('woocommerce_orders', 'woocommerce_orders');

但是,如果沒有下訂單,則顯示為空白(不顯示“尚未下訂單。”帶有商店按鈕)並且我的帳戶導航側欄不顯示。 我是否必須為此創建一個自定義頁面模板才能添加到 woocommerce 帳戶導航側欄中?

編輯:如果我使用 orders.php 而不是 my-orders.php 那么我能夠得到“尚未下訂單”。 但仍然沒有側邊欄導航

我正在嘗試使 url.com/my-account 或短代碼 [woocommerce_my_account] 顯示訂單,而不是顯示“您好用戶(不是用戶)?”的儀表板。

我唯一擁有的是登錄后重定向到訂單而不是儀表板,但我然后轉到 /my-account 仍然顯示我不想要的儀表板。

我發現的最接近我想要的代碼是......

function woocommerce_orders() {
    $user_id = get_current_user_id();
    if ($user_id == 0) {
         return do_shortcode('[woocommerce_my_account]'); 
    }else{
        ob_start();
        wc_get_template( 'myaccount/my-orders.php', array(
            'current_user'  => get_user_by( 'id', $user_id),
            'order_count'   => $order_count
         ) );
        return ob_get_clean();
    }

}
add_shortcode('woocommerce_orders', 'woocommerce_orders');

但是,如果沒有下訂單,則顯示為空白(不顯示“尚未下訂單。”帶有商店按鈕)並且我的帳戶導航側欄不顯示。 我是否必須為此創建一個自定義頁面模板才能添加到 woocommerce 帳戶導航側欄中?

編輯:如果我使用 orders.php 而不是 my-orders.php 那么我能夠得到“尚未下訂單”。 但仍然沒有側邊欄導航

截至今天,只有一種解決方法可以將另一個“我的帳戶”選項卡設置為默認選項,同時保留“儀表板”選項卡。

假設我們要默認使用“下載”選項卡。 我們要:

  1. 將“儀表板”選項卡內容替換為“下載”選項卡內容
  2. 將“儀表板”選項卡重命名為“下載”
  3. 隱藏原來的“下載”標簽,因為我們現在已經有了它
  4. 閱讀“儀表板”選項卡

這在此處粘貼有點復雜,因此我將僅介紹最困難的第 1 點。 rest 可以在 StackOverflow 或本Business Bloomer 教程上輕松找到,因為它的基本重命名/刪除/添加我的帳戶選項卡有效。

根據第 1 點,我們需要覆蓋 woocommerce_account_content() function 負責默認顯示“儀表板”內容,以防我們在“我的帳戶”上並且沒有查詢變量或有非空查詢變量稱為“頁面名稱”。

因此,我將刪除 WooCommerce function,並添加我的版本:

add_action( 'woocommerce_account_content', 'bbloomer_myaccount_replace_dashboard_content', 1 );

function bbloomer_myaccount_replace_dashboard_content() {
    remove_action( 'woocommerce_account_content', 'woocommerce_account_content', 10 );
    add_action( 'woocommerce_account_content', 'bbloomer_account_content' );
}

現在我 go 定義了我的自定義 bbloomer_account_content() function,我基本上告訴系統:

  1. 如果沒有查詢變量,或者如果有並且名為“pagename”的查詢變量不為空,我會回顯我的自定義內容(在我的情況下是“下載”選項卡內容)
  2. 否則,這意味着我在端點 URL 上,因此我復制 woocommerce_account_content() 中的任何內容以返回選項卡內容

代碼:

function bbloomer_account_content() {
    global $wp;
    if ( empty( $query_vars = $wp->query_vars ) || ( ! empty( $query_vars ) && ! empty( $query_vars['pagename'] ) ) ) {
        woocommerce_account_downloads();
    } else {
        foreach ( $wp->query_vars as $key => $value ) {
            if ( 'pagename' === $key ) {
                continue;
            }
            if ( has_action( 'woocommerce_account_' . $key . '_endpoint' ) ) {
                do_action( 'woocommerce_account_' . $key . '_endpoint', $value );
                return;
            }
        }
    }
}

這樣,如果我 go 到“example.com/my-account”我會看到“Downloads”標簽內容; 如果我將選項卡和 go 切換到“儀表板”或“訂單”,我將看到它們的原始內容。

請記住,這只是第 1 部分,因此第 2、3 和 4 部分需要額外的解決方法才能真正發揮作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM