0

現在、私はこれを得ました:

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」を持つユーザーがワードプレスのバックエンドにログインすると、すぐに「unternehmen」のカスタム投稿タイプの投稿の概要画面にリダイレクトされるか、このユーザーによる投稿が 1 つしかない場合は編集画面にリダイレクトされます。その1つの投稿の。

また、ユーザーが投稿タイプ「unternehmen」からではなく、ユーザープロファイル編集画面ではないページにアクセスしようとしている場合、このリダイレクトルーチンを実行する必要があります。

すでに auch ユーザーとしてログインしていて、たとえばダッシュボードにアクセスしようとしたときに、これを正常にテストしました。これは機能します。

しかし、WP から完全にログアウトしてから再度ログインすると、wordpress はこれを実行しています。

http://i.stack.imgur.com/M60aJ.png

...そして、私のブラウザは、リダイレクトエラーがあることを教えてくれます。リダイレクトの無限ループ。しかし、なぜ?投稿タイプ「unternehmen」をチェックする「if」にさえ入るのはなぜですか。ログインすると、最初にダッシュボードにアクセスするため...

誰かが助けてくれることを願っています:)

4

1 に答える 1

1

このアクション 'add_action('wp_login', 'do_anything');' を使用します。また、コールバック関数では、画面をリダイレクトしたい wp_redirect('link') へのリンクを指定できます。

于 2016-03-07T06:08:28.560 に答える