01:講透WordPress 菜單開發 - 在菜單中添加Tab選項卡

    本節詳細介紹了在頂級菜單中實現 Tab 切換選項卡的每一步實現的思路,大家可以據此,寫出在子菜單中添加 Tab 切換選項卡功能。

    在上一節中,我們學習了如何在 WordPress 中添加菜單的操作,包括頂級菜單、子菜單、默認菜單下的子菜單等。

    相信你已經可以按照自己的實際需求添加菜單了。

    本文主要解決如何在菜單中添加 Tab 選項卡的問題。

    問題詳解

    若單一菜單中內容過多,加子菜單又嫌麻煩,可嘗試添加本節介紹的 Tab 選項卡菜單。

    他可以在當前頁面中展示多個選項卡,可以很方便的在當前菜單頁面中的各個 Tab 選項卡中進行切換,效果如下:

    01:講透WordPress 菜單開發 - 在菜單中添加Tab選項卡

    流程和幫助

    流程如下

    01:講透WordPress 菜單開發 - 在菜單中添加Tab選項卡

    感謝以下文章的幫助

    添加菜單

    根據上一節的內容,我們先添加一個頂級菜單,在當前使用主題的 functions.php 文件底部添加以下內容

    //創建一個Demo菜單
    function demo_create_menu_page()
    {
        add_menu_page(
            'Demo選項',                   // 此菜單對應頁面上顯示的標題
            'Demo',                      // 要為此實際菜單項顯示的文本
            'administrator',             // 哪種類型的用戶可以看到此菜單
            'demo_id',                   //  此菜單項的唯一ID(即段塞)
            'demo_menu_page_display',    // 呈現此頁面的菜單時要調用的函數的名稱
            'dashicons-smiley',          //圖標 - 默認圖標
            '600.1',                     //位置
        );
    } // end vuespa_create_menu_page 
    add_action('admin_menu', 'demo_create_menu_page');
    
    //Demo菜單的回調
    function demo_menu_page_display()
    {
    ?>
        <div class="wrap">
        Npcink
        </div><!--/wrap-->
    <?php
    }

    接下來的內容,就是圍繞這個菜單回調函數 demo_menu_page_display() 來操作的。

    添加選項卡

    WordPress 準備好了一套默認的樣式,我們直接使用即可。在回調函數中添加以下內容

    <h2 class="nav-tab-wrapper">
        <a href="?page=demo_id&tab=display_options" class="nav-tab">Display Options</a>
        <a href="?page=demo_id&tab=social_options" class="nav-tab">Social Options</a>
    </h2>

    這里,我們手動構造了兩個選項卡和選項卡的鏈接,通過點擊不同的選項卡,觸發不同的鏈接。

    注意 demo_id 部分,這里是用的頂級菜單的slug 的,需要注意憑借這個,才能找到我們需要的內容

    菜單切換

    為了知道當前是哪個選項卡,我們需要添加以下函數

    <?php
    if( isset( $_GET[ 'tab' ] ) ) {
        $active_tab = $_GET[ 'tab' ];
    } // end if 
    ?>    

    編寫一個條件來檢查是否設置了查詢字符串值,如果是,則將其存儲在變量中。

    然后,為了讓用戶知道當前所在的菜單,我們需要進行判斷,

    • 若當前的 Tab 的值 是當前菜單,顯示選中狀態。
    • 若當前的 Tab 的值 不是當前菜單,顯示未選中狀態。

    修改上面的選項卡內容

    <h2 class="nav-tab-wrapper">
        <a href="?page=demo_id&tab=display_options" class="nav-tab <?php echo $active_tab == 'display_options' ? 'nav-tab-active' : ''; ?>">Display Options</a>
        <a href="?page=demo_id&tab=social_options" class="nav-tab <?php echo $active_tab == 'social_options' ? 'nav-tab-active' : ''; ?>">Social Options</a>
    </h2>

    WordPress 也提供了對應的樣式,這里,我們通過三元運算符實現樣式切換。

    若當前鏈接顯示的是當前菜單選項,則添加樣式 nav-tab-active

    然后,初次進入菜單時,我們是拿不到 Tab 選項內容的,此時,用戶還沒有點擊我們構造的鏈接。

    這里需要設置一個默認展示的菜單。

    $active_tab = isset( $_GET[ 'tab' ] ) ? $_GET[ 'tab' ] : 'display_options';

    這樣,在初次進入菜單頁面時,如果拿不到 Tab 的值,就展示菜單 display_options 的值。

    內容切換

    完成了菜單切換,我們還需要切換內容的顯示,不同的菜單對應不同的內容。

    我們添加以下代碼

    <?php
                //根據當前 Tab 展示對應內容
                if ($active_tab == 'display_options') {
                ?>
                    <h3>Npcink 放置需要展示的內容</h3>
                <?php
                } else {
                ?>
                    <h3>Npcink 放置準備展示的函數</h3>
                <?php
                    //展示設置字段和設置節
    
                } // end if/else
    ?>

    通過簡單的 if 判斷,就能根據不同的菜單 Tab 展示不同的內容了。

    當然,若您有興趣了解的話,可以查查什么是設置字段和設置節,

    一般情況下,這塊的內容應該是這樣的

    <form method="post" action="options.php">
                <?php
                //根據當前 Tab 展示對應內容
                if ($active_tab == 'display_options') {
                ?>
                    <h3>Npcink 放置需要展示的內容</h3>
                <?php
                    //展示設置字段和設置節
                    settings_fields('sandbox_theme_display_options');
                    do_settings_sections('sandbox_theme_display_options');
                } else {
                ?>
                    <h3>Npcink 放置準備展示的函數</h3>
                <?php
                    //展示設置字段和設置節
                    settings_fields('sandbox_theme_social_options');
                    do_settings_sections('sandbox_theme_social_options');
                } // end if/else
    
                //保存按鈕
                submit_button();
    
                ?>
            </form>

    完整代碼

    前面詳細介紹了每一步的作用,這里給出完整代碼,供大家參考

    //創建一個Demo菜單
    function demo_create_menu_page()
    {
        add_menu_page(
            'Demo選項',                   // 此菜單對應頁面上顯示的標題
            'Demo',                      // 要為此實際菜單項顯示的文本
            'administrator',             // 哪種類型的用戶可以看到此菜單
            'demo_id',                   //  此菜單項的唯一ID(即段塞)
            'demo_menu_page_display',    // 呈現此頁面的菜單時要調用的函數的名稱
            'dashicons-smiley',          //圖標 - 默認圖標
            '600.1',                     //位置
        );
    } // end vuespa_create_menu_page 
    add_action('admin_menu', 'demo_create_menu_page');
    
    //Demo菜單的回調
    function demo_menu_page_display()
    {
    ?>
        <div class="wrap">
        <!--標題-->
            <h2>
                <?php echo esc_html(get_admin_page_title()); ?>
            </h2>
            <!-- 在保存設置時調用 WordPress 函數以呈現錯誤. -->
            <?php settings_errors(); ?>
    
            <?php
    
            //檢查URL中是否存在名為 "tab" 的GET參數,并將其值分配給變量 $active_tab
            if (isset($_GET['tab'])) {
                $active_tab = $_GET['tab'];
            } // end if
    
            //設置默認值
            $active_tab = isset($_GET['tab']) ? $_GET['tab'] : 'display_options';
            ?>
    
            <!--這里的鏈接手動構造,注意,page=你填的菜單slug-->
            <h2 class="nav-tab-wrapper">
                <a href="?page=demo_id&tab=display_options" class="nav-tab <?php echo $active_tab == 'display_options' ? 'nav-tab-active' : ''; ?>">Display Options</a>
                <a href="?page=demo_id&tab=social_options" class="nav-tab <?php echo $active_tab == 'social_options' ? 'nav-tab-active' : ''; ?>">Social Options</a>
            </h2>
    
    
    
            <form method="post" action="options.php">
                <?php
                //根據當前 Tab 展示對應內容
                if ($active_tab == 'display_options') {
                ?>
                    <h3>Npcink 放置需要展示的內容</h3>
                <?php
                    //展示設置字段和設置節
                    settings_fields('sandbox_theme_display_options');
                    do_settings_sections('sandbox_theme_display_options');
                } else {
                ?>
                    <h3>Npcink 放置準備展示的函數</h3>
                <?php
                    //展示設置字段和設置節
                    settings_fields('sandbox_theme_social_options');
                    do_settings_sections('sandbox_theme_social_options');
                } // end if/else
    
                //保存按鈕
                submit_button();
    
                ?>
            </form>
        </div><!--/wrap-->
    <?php
    }

    注意,因為我們沒有配置設置字段和設置節,所以,點擊保存按鈕會報錯,

    為了專注,這里僅做拓展介紹,并不提供相關實現內容。

    總結

    這一節,我們詳細的介紹了菜單 Tab 切換的每一步,

    您可以參考代碼,實現在子菜單中添加 Tab 選項內容。

    下一節,我們分享如何對菜單進行權限控制,僅允許指定人員訪問,以及僅在指定菜單中加載 JS 資源。

    最新文章

    • 后續文章持續撰寫中,點個關注,獲取平臺最新文章推送。
    • 技術有限,還望諸位協助勘誤,于評論區指出,
    • 常一文多發,最新勘定和增補文章于下方鏈接給出
    • http://www.kartiktrivedi.com/277333.html
    教程

    第五節: Vue3 開發WordPress設置選項 - 使用Vite打包JS資源

    2023-6-29 22:25:00

    教程

    02:講透WordPress 菜單開發 - 權限控制與加載指定JS

    2023-6-30 22:48:00

    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    0 條回復 A文章作者 M管理員
      暫無討論,說說你的看法吧
    ?
    個人中心
    購物車
    優惠劵
    今日簽到
    有新私信 私信列表
    搜索
    主站蜘蛛池模板: 色婷婷一区二区三区四区成人网| 日本无卡码一区二区三区| 精品熟人妻一区二区三区四区不卡 | 国产精品亚洲一区二区麻豆| 国偷自产一区二区免费视频| 全国精品一区二区在线观看| 91午夜精品亚洲一区二区三区 | 国内精品一区二区三区在线观看| 精品国产一区二区三区久久| 一区二区手机视频| 无码丰满熟妇一区二区| 国产一区视频在线| 日本视频一区二区三区| 日韩AV无码一区二区三区不卡| 国产吧一区在线视频| 一区二区视频在线观看| 中文字幕亚洲一区二区三区| 国产伦精品一区二区| 性色av闺蜜一区二区三区| 亚洲午夜在线一区| 国产成人久久精品区一区二区| 亚洲AV美女一区二区三区| 国产高清视频一区三区| 中文字幕一区二区三区5566| 91久久精品国产免费一区| 精品视频一区二区三区免费| 国产视频一区在线观看| 亚洲电影一区二区三区| 久久久精品人妻一区二区三区| 亚洲不卡av不卡一区二区| 无码国产精品一区二区免费vr| 无码人妻少妇色欲AV一区二区| 少妇人妻精品一区二区三区| 亚洲一区在线视频| 手机福利视频一区二区| 亚洲熟女乱综合一区二区| 日韩精品无码一区二区三区AV| 国产精品毛片VA一区二区三区 | 天天看高清无码一区二区三区| 日韩动漫av在线播放一区| 国产av天堂一区二区三区|