Я создал собственный тип записи:
register_post_type('sample_post_type',array(
'labels' => array(
'name' => _x('Sample Posts', 'post type general name'),
'singular_name' => _x('Sample Post', 'post type singular name')
),
'public' => true,
'show_in_nav_menus' => false,
'exclude_from_search' => true
));
Как я могу отключить просмотр одного сообщения для этого конкретного типа сообщения? Отображение простого 404 - это нормально, или перенаправление на домашнюю страницу. Это внутри плагина, поэтому я не могу создать файл single-sample_post_type.php для настройки пустой страницы.
источник
get_current_user_id()
оценивает ли оно значение 0.is_singular('post-type-slug')
вif()
условии вместо 2 условий?Просто установить аргумент
когда вы вызываете register_post_type ()
источник
Более простой способ сделать это - передать следующие аргументы при регистрации пользовательского типа сообщения.
источник
publically_querable
быть правдой, чтобы архивы почтовых типов работали.Один. Из вашего файла функций.
Два. Из вашего файла single.cpt.php:
источник
single-cpt_name.php
файла, вы не сможете это сделать. Если вы поместите функцию в простой файл плагина, вы можете активировать / деактивировать без редактирования какого-либо файла.Исходя из действительно хорошего ответа Свена, я переписал его функцию, чтобы упростить добавление нескольких типов записей, используя
in_array()
оператор if, а затем перенаправлять на страницу архива вместо домашней страницы.(кстати, я думаю, что установка
query_var
и / илиpublically_queryable
значение false отключит не только отдельные представления, но и собственное представление архива, переопределяя'has_archive' => true
. В этом случае вы все равно можете настроить собственный WP_query и создать свою собственную страницу архива, в шаблон, но основной запрос больше этого не сделает, не так ли?)источник
Протестировано все перечисленные выше, и реальное решение проще, чем любые предлагаемые перенаправления.
Для того, чтобы архив был доступен и перечислял элементы, а один пост не был доступен и автоматическое перенаправление на набор 404
при регистрации вашего CPT. Если вы установите
publicly_queryable
значение false, ваши архивы будут перенаправлены на дом, любая другая комбинация не будет работать. Установите вquery_var
false, и это все.Вот полный CPT https://gist.github.com/danyj/bfd038d3c8d578548c4d700bd0a7942a
см. строку 50 https://gist.github.com/danyj/bfd038d3c8d578548c4d700bd0a7942a#file-thz_cpt_items_single_view_redirect-php-L50
как указано здесь
https://codex.wordpress.org/Function_Reference/register_post_type
источник
В случае, если вы хотите полностью отключить один вид пользовательского типа записи во внешнем интерфейсе, но иметь возможность отображать страницу архива, все становится немного сложнее.
Установка
publicly_queryable
дляfalse
илиrewrite
вfalse
помешает для отображения как одного и архивного вида. Вregister_post_type
аргументах функции нет флага, предотвращающего создание только правил перезаписи одного представления.https://github.com/WordPress/WordPress/blob/5.2.3/wp-includes/class-wp-post-type.php#L540
Тем не менее, вы можете удалить тег перезаписи после регистрации вашего типа записи, и это оставит правила перезаписи архивного представления без изменений, но удалит только правила перезаписи одного представления.
Еще одним бонусом является то, что теперь вы можете создавать простые страницы WordPress, используя структуру постоянных ссылок типа события (
event/simple-page
), которая может быть полезна на сложных веб-сайтах.Не забудьте сбросить правила перезаписи после модификации кода.
источник