Если условно с двумя ролями - PullRequest
0 голосов
/ 18 мая 2019

Я пытался, но я не добился результатов. Я бы хотел, чтобы его видели только автор поста и пользователи с ролью shop_manager, если не перенаправить страницу. Если они являются авторами, но не написали сообщение, оно не сможет получить к нему доступ.

код работает для всего, кроме пользователей shop_manager.

  function wpso_author_redirection() {
if ( is_single() ) {
    $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']) ||$user 
  ['roles']!= 'shop_manager'  )   {
         wp_redirect( 'https://aa.com/contenido-bloqueado');
    }
}
 }

1 Ответ

1 голос
/ 18 мая 2019

В самом внутреннем операторе if вы используете ||,Это означает ИЛИ и это означает, что если пользователь не является автором или роль пользователя не является shop_manager, перенаправление будет выполнено.

Вы должны использовать AND, && в php:

if ($user_id != absint( $current_post_details['post_author']) && $user['roles']!= 'shop_manager'  )   {
    wp_redirect( 'https://aa.com/contenido-bloqueado');
}

это AND говорит о том, что если пользователь не является автором, а роль пользователя - не shop_manager, выполните перенаправление.Если какое-либо из этих значений является ложным (пользователь является автором или роль пользователя является shop_manager), перенаправление не будет выполнено.

...