Intereting Posts
Это хорошая идея переименовать «index.php» в папку «wp-admin», чтобы избежать взлома? Добавление слайд-переключателя в WordPress WordPress Network (multisite) – как обеспечить, чтобы каждый сайт имел свой собственный URL-адрес администратора? Как удалить слизь со статической домашней страницы? Добавление пользовательских полей на странице Многопользовательские пользователи Multisite перенаправляет весь поддомен в основной домен Получить идентификатор сообщения в wp_set_comment_status Невозможно отобразить пользовательские поля на страницах продуктов WooCommerce Получить несколько префикса db с помощью $ wpdb Как использовать инструкцию «TRUNCATE TABLE» MySQL? Доступ к шрифту, не разрешенному политикой CORS Я могу получить постоянную ссылку или выдержку, чтобы работать правильно, но не оба jQuery Подтвердить wp_editor Сообщение X of Y в файле single.php / sidebar.php Как установить WPMU с композитором?

Ошибка при переадресации входа – $ user->

Я делаю простой переадресацию имени на пользовательскую страницу администратора, используя следующий код:

function my_login_redirect( $redirect_to, $request, $user ) { if ( is_array( $user->roles ) ) { if ( in_array( 'administrator', $user->roles ) || in_array( 'shop_manager', $user->roles ) ) { return admin_url( 'admin.php?page=welcome-page.php' ); } else { return admin_url(); } } } add_filter( 'login_redirect', 'my_login_redirect', 10, 3 ); 

Однако я получаю сообщение об ошибке:

Примечание. Неопределенное свойство: WP_Error :: $ role

строка, на которую она ссылается, равна if ( is_array( $user->roles ) ) {

это, по-видимому, рекомендуется в документах WordPress – что здесь может быть неправильным?

Глядя на PhpDocs для фильтра login_redirect я обнаружил, что третьим параметром может быть объект WP_Error вместо WP_User :

$ user WP_User, если логин был успешным, иначе объект WP_Error.

Таким образом, образец рабочего кода для вас будет следующим:

 function dls160216_login_redirect( $redirect_to, $request, $user ) { if ( ! is_wp_error( $user ) ) { // do redirects on successful login if ( $user->has_cap( 'administrator' ) || $user->has_cap( 'shop_manager' ) ) { return admin_url( 'admin.php?page=welcome-page.php' ); } else { return admin_url(); } } else { // display errors, basically return $redirect_to; } } add_filter( 'login_redirect', 'dls160216_login_redirect', 10, 3 ); 

Обратите внимание, что я использовал метод has_cap . Это более надежное будущее и позволяет лучше фильтровать. Может проверять возможность или роль.