Страница плагина Wordpress загружается в контейнер содержимого администратора Вместо отдельной страницы


Я создаю плагин WordPress, который имеет собственный пользовательский интерфейс. Он выглядит как стандартное веб-приложение, поэтому все, что делается в плагине, обрабатывается в этом пользовательском интерфейсе, а не интегрируется с административной областью WP. Моя проблема, похоже, заключается в том, что я не могу загрузить его как отдельную страницу, я могу загрузить его только на странице, созданной в области администрирования, с пользовательским интерфейсом, встроенным в блок содержимого. Когда я добавляю его в меню следующим образом:

// Add plugin UI submenu item
add_submenu_page(
    'myPlugin', 'myPlugin WP', __('myPlugin UI', 'myPlugin'),
    $capability, 'myPlugin-ui', 'myPlugin_router'
);

И обеспечьте ему доступ к страница как таковая:

    function myPlugin_router() {

        // Get current screen details
        $screen = get_current_screen();

    if(strpos($screen->base, 'myPlugin-ui') !== false) {
            include(DS_ROOT_PATH.'/views/myPlugin-ui.php');

    }
}

Это потому, что я использую "включить", чтобы добавить его, поэтому он загружает его как шаблон?

Я также планирую использовать этот пользовательский интерфейс так же, как это делает администратор WordPress, и загружать отдельные страницы внутри области содержимого пользовательского интерфейса, точно так же, как WP делает это с моим пользовательским интерфейсом. Поэтому он использует шаблоны. Мог бы я просто использовать для этого include, как указано выше?

Author: user1632018, 2014-01-09

1 answers

Я предварю это, сказав, что, по-моему, это действительно плохая идея, но вы можете обойти пользовательский интерфейс администратора, подключив действие, которое происходит после инициализации, но до того, как произойдет какой-либо вывод:

function my_admin_ui(){
    if( isset( $_GET['page'] )
        && 'myPlugin-ui' == $_GET['page'] ){
            include( plugin_dir_path( __FILE__ ) . 'views/myPlugin-ui.php' );
            exit;
    }
}
add_action( 'admin_init', 'my_admin_ui', 999 );
 2
Author: Milo, 2014-01-10 05:59:50