Перенаправить на URL, если пользователь не является автором сообщения. - PullRequest
0 голосов
/ 17 мая 2019

Я ищу способ перенаправления при просмотре любой публикации, кроме автора публикации.

На сайте "author" и "custom_role" есть две роли.Эта последняя роль разрешено видеть всем.Роль автора может видеть только его собственная, остальные перенаправляют.Я пытался некоторое время, в этом последнем коде я работаю, но он не работает, и я не знаю, почему

Большое спасибо!

add_action( 'pre_get_posts', function() {
if( is_author() )
{
    if( ! is_user_logged_in() )
    {
        wp_redirect( 'https://aaa.com/custom' );
        exit;
    }

    $author = get_queried_object();

    if( $author->ID != get_current_user_id() )
    {
        wp_redirect( get_author_posts_url( 
 get_current_user_id() ) );
        exit;
    }

}
} );

1 Ответ

0 голосов
/ 17 мая 2019

Прежде всего, is_author() используется для проверки, является ли текущая страница страницей архива автора. Пожалуйста, проверьте следующий пример. Это может быть не совсем анстер, но это может помочь. В отдельном сообщении сравнивается автор сообщения и текущий идентификатор пользователя. Если они не совпадают, то он перенаправляется на домашнюю страницу. Если эти идентификаторы совпадают, то текущий пользователь также является автором сообщения, поэтому текущему пользователю будет разрешено просматривать страницу.

add_action( 'get_header', 'wpso_author_redirection' );

function wpso_author_redirection() {
    if ( is_singular() ) {
        $current_post_details = get_post( get_the_ID(), ARRAY_A );
        $user_id = get_current_user_id();
        if ( $user_id !== absint( $current_post_details['post_author'] ) ) {
            wp_redirect( home_url() );
        }
    }
}
...