Intereting Posts
Как использовать `wp_insert_user` и` wp_insert_post` одновременно без ошибки «отправленных заголовков»? Могу ли я проверить nonce, который был сгенерирован на другом сайте WP? /% post_name% / или /% postname% / in Permalinks? API REST: ограничения разрешений на чтение для конечных точек по умолчанию Мне нужно исключить из запроса категорию и несколько пользовательских таксономий WordPress показывает только после входа Шаблоны пользовательских шаблонов сообщений? # 1115 – Неизвестный набор символов: 'utf8mb4' Поддержка клиентов: TinyMCE перестала работать (на некоторых компьютерах) Когда я должен использовать API Transients? Использование разделителей в навигации по меню – где добавить код? Как автосохранение WordPress может сохранять поля плагина? Отсутствует URL-адрес в пароле сброса пароля Установите DNS AWS Route53 и теперь мой сайт WordPress не загрузит Почему мои запросы мешают глобальной переменной post?

Как использовать персонализированный тип сообщения в качестве главной страницы?

Я хотел бы установить переднюю страницу сайта как отдельную запись из пользовательского типа сообщения. Я смог изменить запрос для моей первой страницы в архив Custom Post Type со следующим кодом (первоначально размещенным здесь ):

function custom_front_page($wp_query){ if($wp_query->get('page_id')==get_option('page_on_front')){ $wp_query->set('post_type','album'); $wp_query->set('page_id',''); // empty // fix conditional functions $wp_query->is_page = false; $wp_query->is_archive = true; $wp_query->is_post_type_archive = true; } } add_action('pre_get_posts','custom_front_page'); 

Замена

 $wp_query->is_archive = true; $wp_query->is_post_type_archive = true; 

с

 $wp_query->is_single = true; 

вызывает шаблон single-album.php как мне хотелось бы, но он все равно возвращает ВСЕ записи в категории «Альбомы», а не только один.

Добавление

 $wp_query->set('posts_per_page',1); 

не имеет никакого эффекта.

Что я должен делать вместо этого?

Бонусный вопрос: есть ли хорошая ссылка где-то о том, как манипулировать query таким образом?

Solutions Collecting From Web of "Как использовать персонализированный тип сообщения в качестве главной страницы?"

Самый простой способ отображать отдельные сообщения на главной странице:

 global $wp_query; $wp_query = new WP_Query( array( 'p' => 'POST ID HERE' ) ); include( 'single-POSTTYPE.php' ); 

Я должен был сделать то же самое для клиента, и я нашел два ресурса, которые мне помогли:

Как вы используете CPT в качестве домашней страницы по умолчанию?

http://wpquestions.com/question/show/id/2944

Это решение, которое сработало для меня:

 function add_<MYTPE>_to_dropdown( $pages, $r ) { if('page_on_front' == $r['name']) { $args = array( 'post_type' => '<MYTYPE>' ); $items = get_posts($args); $pages = array_merge($pages, $items); } return $pages; } add_filter( 'get_pages', 'add_<MYTPE>_to_dropdown' ); function enable_front_page_<MYTPE>( $query ) { if('' == $query->query_vars['post_type'] && 0 != $query->query_vars['page_id']) $query->query_vars['post_type'] = array( 'page', '<MYTPE>' ); } add_action( 'pre_get_posts', 'enable_front_page_<MYTPE>' ); 

Просто замените <MYTYPE> своим пользовательским именем

https://wordpress.org/plugins/mpress-custom-front-page/, кажется, реализует правильную логику в чистом виде.

Github https://github.com/wpscholar/mpress-custom-front-page/