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://m.kartiktrivedi.com/277333.html

    給TA贊賞
    共{{data.count}}人
    人已贊賞
    ??
    Npcink上的部份代碼及教程來源于互聯網,僅供網友學習交流,若您喜歡本文可附上原文鏈接隨意轉載。
    無意侵害您的權益,請發送郵件至 1355471563#qq.com 或點擊右側 私信:Muze 反饋,我們將盡快處理。
    ?
    購物車
    優惠劵
    搜索
    主站蜘蛛池模板: 亚洲福利视频一区| 国产色综合一区二区三区| 免费观看一区二区三区| 国模无码一区二区三区不卡| 影院成人区精品一区二区婷婷丽春院影视 | 免费高清av一区二区三区| 免费人妻精品一区二区三区| 国产精品高清一区二区三区不卡| 波多野结衣一区二区三区高清在线| 久久久久一区二区三区| 在线观看精品一区| 无码人妻精品一区二区三区久久 | 国产精品一区视频| 精品少妇ay一区二区三区| 中文字幕精品一区| 国产精品被窝福利一区 | 亚洲av成人一区二区三区观看在线 | 久久精品国产第一区二区| 国产MD视频一区二区三区| 亚洲一区中文字幕在线观看| 国产午夜精品一区二区三区不卡| 国产福利酱国产一区二区| 国产香蕉一区二区在线网站| 久久se精品一区二区国产| 无码乱人伦一区二区亚洲一| 国产av一区二区三区日韩| 国产乱码精品一区二区三| 激情啪啪精品一区二区| 秋霞日韩一区二区三区在线观看 | 亚洲AV无码一区二区三区国产| 色精品一区二区三区| 三级韩国一区久久二区综合| 国产丝袜一区二区三区在线观看| 无码人妻一区二区三区兔费| 亚洲A∨精品一区二区三区下载| 无码一区18禁3D| 精品一区二区三区无码免费直播| 一区二区三区福利视频| 亚洲电影一区二区| 国产怡春院无码一区二区| 日韩精品电影一区|