wordpress Ограничение доступа к страницам авторизацией - только для зарегистрированных пользователей.

В WP (5 версии) судя по всему нет общедоступной удобной системы для закрытия доступа (или её описание не так то простой найти).

Решение через код

Можно исползовать подход вроде:

use ItForFree\rusphp\Network\Url\Url;
use ItForFree\rusphp\PHP\Regexp\Regexp;

add_action( 'template_redirect', 'redirect_to_specific_page' );

function redirect_to_specific_page() {

    $onlyForAuthedUsersUrlPattrens = [
        '~/shop/.*~',
        '~/product/.*~'
    ];
    
    $Url = new Url();
//    vpre($Url->path);
    if (Regexp::isLikeAny($Url->path, $onlyForAuthedUsersUrlPattrens) 
            && !is_user_logged_in() ) {

        wp_redirect( '/login/', 302 ); 
        exit;
    } 
}

Код выше использует composer-пакет rusphp.

Если вы хотите добавить get параметр сразу переадресуйте например на:

wp_redirect('/wp-login.php?shopneedslogin=true', 302); 

Переадресация после авторизации

После же авторизации можно переадресовать пользователя на нужную страницу.