Страница плагина 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, как указано выше?
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 );