Перенаправить пользователей на пользовательскую панель управления в Wordpress

Я пытаюсь дать роли «подписчик» возможность edit_post. Хотя это успешно, я не могу отвести пользователей от страницы wordpress wp-admin по умолчанию при входе в систему.

Всякий раз, когда я пробую предложенное решение, пользователи, которые входят в систему (с разрешением edit_post), перенаправляются на страницу wp-admin.

Когда они входят в систему, независимо от того, что я делаю, WordPress перенаправляет их на wp-admin, показывая серверную часть WordPress. (Я не хочу, чтобы пользователи это видели)

Причина, по которой я хочу это сделать, заключается в том, что у меня есть настраиваемая информационная панель для них, расположенная по адресу http://website.com/login/customdashboard/

Я бы предпочел, чтобы это была функция.

Я безуспешно пробовал плагины:
«Перенаправление входа в систему Peter», а также «s2member (страница приветствия входа)»

Я ПРОБОВАЛ СЛЕДУЮЩУЮ ФУНКЦИЮ БЕЗ УСПЕХА:

function soi_login_redirect( $redirect_to, $request, $user  ) {
    return ( is_array( $user->roles ) && in_array( 'administrator', $user->roles ) ) ? admin_url() : site_url();
} // end soi_login_redirect
add_filter( 'login_redirect', 'soi_login_redirect', 10, 3 );

ДРУГАЯ ПОПЫТКА БЕЗ УСПЕХА:

function redirect_login_page(){
$page_viewed = basename($_SERVER['REQUEST_URI']);
 $login_page  = site_url();
 if( $page_viewed == "wp-login.php" && $_SERVER['REQUEST_METHOD'] == 'GET') {
 wp_redirect($login_page);
 exit();
 }
}
add_action('init','redirect_login_page');

Любая помощь в этом отношении будет принята с благодарностью.


person user1823055    schedule 13.03.2013    source источник
comment
Извините, но это похоже на вопрос-хамелеон. Одно дело — это перенаправление всех /wp-admin URL-адресов, а заставить эту внешнюю ссылку для удаления работать в этом состоянии другое.   -  person brasofilo    schedule 14.03.2013
comment
спасибо - отредактировал его обратно, чтобы сохранить целостность. :)   -  person user1823055    schedule 14.03.2013
comment
Круто, снова проголосовал, чтобы сохранить целостность;)   -  person brasofilo    schedule 14.03.2013


Ответы (1)


Если вы хотите перенаправить все адреса /wp-admin, вы можете использовать:

add_action( 'admin_init', 'redirect_so_15396771' );

function redirect_so_15396771()
{   
    if ( defined( 'DOING_AJAX' ) && DOING_AJAX )  
        return;

    // http://codex.wordpress.org/Roles_and_Capabilities
    if ( !current_user_can('delete_users') ) {
            wp_redirect( site_url( '/login/customdashboard/' ) );
            exit();
    }
}

Если вам нужно отфильтровать это в соответствии с текущей страницей, вы можете использовать глобальный $pagenow, который имеет значения index.php, profile.php, tools.php и т. д.

person brasofilo    schedule 13.03.2013
comment
Интересно. Является ли разрешение delete_users таким же, как и edit_posts? Я просто пытаюсь это понять. - person user1823055; 14.03.2013
comment
Приведенный выше код, кажется, делает то, что я хочу, НО, похоже, он блокирует возможность моих пользователей удалять созданные сообщения. - есть идеи? - person user1823055; 14.03.2013
comment
Я разрешаю пользователям удалять свои сообщения с помощью ссылки на удаление на самой странице, привязанной к функции. - person user1823055; 14.03.2013
comment
Ну, это похоже на другой вопрос. Потому что блокировать доступ к /wp-admin — это одно, а блокировать/включать любой пользовательский код (не опубликованный в исходном Q) — это другое. ::: Re: delete_users, проверьте: codex.wordpress.org/Roles_and_Capabilities - person brasofilo; 14.03.2013
comment
Я обновил ответ с исключением Ajax, которое может мешать любому пользовательскому коду. - person brasofilo; 14.03.2013
comment
Спасибо. Я обновил свой вопрос, включив в него код, который может вызывать конфликт. Ваше обновление, похоже, приводит к такому же поведению. :( - person user1823055; 14.03.2013
comment
согласился, что это превращается в вопрос-хамелеон - я открою еще один, чтобы удовлетворить эту конкретную потребность. Вы, кажется, решили мою первоначальную проблему - спасибо! - person user1823055; 14.03.2013