В самом внутреннем операторе 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), перенаправление не будет выполнено.