Добавить на лету вкладки в опции плагина

Привет, я создаю страницу параметров плагина. То, что я действительно хотел бы сделать, это реализовать повторяющиеся вкладки (которые, как я знаю, возможно с помощью API настроек), но с твистом, который я до сих пор не видел в любой панели параметров. Я хотел бы создавать новые вкладки «на лету», точно так же, как в разделе «Меню» в пользовательском интерфейсе администратора.

Есть ли стандартный способ сделать это?

6 голосов | спросил urok93 10 J000000Tuesday12 2012, 15:49:50

3 ответа


17

Вкладки WordPress нестандартные, статические html разметки. Вы можете добавить только разметку в файл темы functions.php или внутри вашего плагина.

<h2 class="nav-tab-wrapper">
    <a href="#" class="nav-tab">Tab #1</a>
    <a href="#" class="nav-tab nav-tab-active">Tab #2</a>
    <a href="#" class="nav-tab">Tab #2</a>
</h2>
  

WP Tabs


В этом вспомогательном плагине (стиль администратора WordPress) вы найдете класс ссылки для разметки по умолчанию для области администрирования.
Полный снимок плагина. Предыдущий снимок - это деталь, расположенная внизу этой страницы.
Нажмите, чтобы увеличить:

 полный снимок плагина wordpress-admin-style

ответил bueltge 16 J000000Monday12 2012, 11:52:56
3

Создайте массив вкладок, которые вы хотите создать на своей странице администратора. Это скорее всего будет содержать ваши страницы меню, добавленные вашим плагином. Ключами массива будет slug страницы, и значениями массива будет текст табуляции.

Повторите функцию, в которой вы хотите, чтобы вкладки отображались в вашем плагине.

<?php
// Create WP Admin Tabs on-the-fly.
function admin_tabs($tabs, $current=NULL){
    if(is_null($current)){
        if(isset($_GET['page'])){
            $current = $_GET['page'];
        }
    }
    $content = '';
    $content .= '<h2 class="nav-tab-wrapper">';
    foreach($tabs as $location => $tabname){
        if($current == $location){
            $class = ' nav-tab-active';
        } else{
            $class = '';    
        }
        $content .= '<a class="nav-tab'.$class.'" href="?page='.$location.'">'.$tabname.'</a>';
    }
    $content .= '</h2>';
        return $content;
}

$my_plugin_tabs = array(
    'my-plugin-overview' => 'Overview',
    'my-plugin-settings' => 'Settings',
    'my-plugin-uninstall' => 'Uninstall'
);

echo admin_tabs($my_plugin_tabs);
?>
ответил Michael Ecklund 18 J000000Wednesday12 2012, 06:39:00
1

Я обновил решение Майкла, чтобы его можно было использовать как вкладку на одной странице. Вызвав main_function(), вы выведете вкладки, которые свяжут и выведут файлы, выделенные в $my_plugin_tabs.

Например, нажав «Настройки», вы загрузите вкладку settings.php и покажете вкладки. Я подумал, что это может помочь загрузить это также:

<?php
// Create WP Admin Tabs on-the-fly
function admin_tabs( $page, $tabs, $current=NULL ) {
    if ( is_null( $current ) ) {
        if ( isset( $_GET['tab'] ) ) {
            $current = $_GET['tab'];
        }
    }
    $content = '';
    $content .= '<h2 class="nav-tab-wrapper">';
    foreach( $tabs as $tab => $tabname ) {
        if ( $current == $tab ) {
            $class = ' nav-tab-active';
        } else {
            $class = '';    
        }
        $content .= '<a class="nav-tab' . $class . '" href="?page=' . 
            $page . '&tab=' . $tab . '">' . $tabname . '</a>';
    }
    $content .= '</h2>';                 
    echo $content;
    if ( ! $current ) 
        $current = key( $tabs );
    require_once( $current . '.php' );
    return;
}

function main_function() {
    $my_plugin_tabs = array(
        'bundles'  => 'Bundles',
        'settings' => 'Settings',
    );
    $my_plugin_page = 'bundles';
    echo admin_tabs( $my_plugin_page, $my_plugin_tabs );
}
ответил raison 19 32014vEurope/Moscow11bEurope/MoscowWed, 19 Nov 2014 17:16:59 +0300 2014, 17:16:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132