Wordpress, перенаправить пользователя непосредственно на пользовательский экран редактирования сообщений после входа в систему

В настоящее время я получил это:

function redirect_companies()
{
    if ( current_user_can( 'ca_company' ) )
    {
        $screen = get_current_screen();

        if ( $screen->post_type != 'unternehmen' && $screen->id != 'profile' )
        {
            global $current_user;

            $current_users_posts = get_posts(
                                        array(
                                            'post_type' => 'unternehmen',
                                            'author' => $current_user->ID
                                        )
                                    );

            if ( count( $current_users_posts ) > 1 )
            {
                $redirect = admin_url( 'edit.php?post_type=unternehmen' );
            }
            else
            {
                $redirect = get_edit_post_link( $current_users_posts[0]->ID );
            }

            wp_redirect( $redirect, 301 );
        }
    }
}
add_action('current_screen', 'redirect_companies');

Что он должен делать: пользователь с ролью ca_company входит в бэкэнд WordPress и мгновенно перенаправляется либо на экран обзора сообщений пользовательского типа сообщений "unternehmen", либо, если существует только один пост этого пользователя, на экран редактирования. из этого одного поста.

Кроме того, он должен выполнить эту процедуру перенаправления, если пользователь пытается получить доступ к любой странице, которая не относится к типу записей "unternehmen" и не является экраном редактирования профиля пользователя.

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

Но если я полностью выйду из WP, а затем снова войду, WordPress выполняет это:

... а затем мой браузер сообщает мне, что произошла ошибка перенаправления. Бесконечный цикл перенаправления. Но почему? Почему это даже входит в это "если", где я проверяю тип сообщения "unternehmen". Потому что, если я вхожу в систему, я сначала попадаю на панель инструментов...

Надеюсь, кто-то может помочь:)

1 ответ

Используйте это действие 'add_action('wp_login', 'do_anything');'. А в функции обратного вызова вы можете дать ссылку на wp_redirect('link'), куда вы хотите перенаправить ваш экран.

Другие вопросы по тегам