Перенаправление с панели управления на edit.php, если wp_is_mobile () истинно

Ищете способ перенаправить пользователя с панели управления прямо на edit.php если wp_is_mobile() истинно.

Это то, что я пробовал:

 function redirect_if_mobile() { $screen = get_current_screen(); if($screen->base == 'dashboard') { if ( wp_is_mobile() ) { $url = admin_url( 'edit.php' ); wp_redirect( $url ); } } } add_action( 'admin_menu', 'redirect_if_mobile'); 

Проблема в том, что get_current_screen() не определен ни в admin_init ни в admin_menu (если вы подключаетесь к admin_head то уже слишком поздно, а заголовки уже отправлены).

Идеи?

Solutions Collecting From Web of "Перенаправление с панели управления на edit.php, если wp_is_mobile () истинно"

Действие, которое вы ищете, это auth_redirect, который находится перед заголовками, но все же распознает $ pagenow, чтобы указать, на какой странице вы находитесь:

 add_action('auth_redirect', 'the_mobile_boot'); function the_mobile_boot() { global $pagenow; if ( $pagenow == 'index.php' && wp_is_mobile() ) { header( 'Location: ' . get_admin_url(null, 'edit.php') ); exit; } } 

Фактически вы можете использовать функцию, которую используете, вам просто нужно использовать load-index.php (нет необходимости в глобальных подсчетах, если они вам не нужны):

 add_action('load-index.php', function(){ if(get_current_screen()->base == 'dashboard' && !wp_is_mobile()) wp_redirect(admin_url('edit.php')); }); 

Хорошо, нашел одно решение, хотя и не такое элегантное.

 function load_if_mobile() { if ( wp_is_mobile() ) {?> <script> window.location = '/wp-admin/edit.php'; </script><?php } } add_action('admin_head-index.php', 'load_if_mobile');