現在、私はこれを得ました:
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」にさえ入るのはなぜですか。ログインすると、最初にダッシュボードにアクセスするため...
誰かが助けてくれることを願っています:)