Как в wordpress запретить просмотр записей произвольного типа(custom post_type)?
я создал свой произвольный тип записей в вордпресс(post_type). С помощью встроенной функции register_post_type(). Мне нужно запретить просмотр данных записей на сайте(фронтэнд), так как они у меня служат для внутренних целей. Для решения проблемы я пробовал играться с параметрами, такими как: public, publicly_queryable, exclude_from_search, query_var, rewrite. Но результата это не принесло, записи как открывались на сайте так и открываются. Еще важным условием является то что мне нужно отображать произвольный тип в админке. Скажите как можно решить данную проблему?
Думаю в вашем случае(раз игра с параметрами не прошла) поможет обычная переадресация, например на главную. Мы проверим тип страницы и если он тот самый — будем перенаправлять:
add_action( 'template_redirect', 'onwp_redirect_post' ); function onwp_redirect_post() { $queried_post_type = get_query_var('post_type'); if ( is_single() && 'onwp_post_type' == $queried_post_type ) { wp_redirect( home_url(), 301 ); exit; } }
onwp_post_type — ваш произвольный тип записи.
Нужно заметить что мы сделаем переадресацию, если только это single — страница записи.
Для того что бы исключить из поиска, вам следует и выдачи вообще, вам следует прописать к своему post_type следующее:
'public' => false, 'publicly_queryable' => false, // запросы не будут работать во фронтэнде 'exclude_from_search' => true, // не показывать в поиске исключить из запросов query_posts() 'show_ui' => true, // показывать в меню в админ панеле 'query_var' => false, // Ставим false, чтобы убрать возможность запросов 'rewrite' => false, // не использовать ЧПУ
‘show_ui’ => true — покажет ваш пост тайп в меню.

Если нужно можно перенаправить на страницу 404 об этом говорилось тут: