Отображать пользовательский тип сообщения из шаблона

У меня есть этот файл шаблона, называемый События. Цель этого файла – показать последнюю запись с настраиваемым событием типа. Я решил это с очень уродливым решением. Должен быть более простой и правильный способ сделать это. Если вы проверите мой код, убедитесь, что вы понимаете, что я пытаюсь выполнить 🙂

Заранее спасибо!

<?php /* * Template Name: Event */ ?> <?php $permalink = get_permalink($wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_type = 'event' ORDER BY post_date DESC LIMIT 1")); ?> <html> <head> <script type="text/javascript"> window.location = "<?php echo $permalink; ?>"; </script> </head> <body> </body> </html> 

Чистое решение:

 <?php /* * Template Name: Event */ $permalink = get_permalink($wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_type = 'event' ORDER BY post_date DESC LIMIT 1")); header('Location: '.$permalink); ?> 

Solutions Collecting From Web of "Отображать пользовательский тип сообщения из шаблона"

Если вы хотите использовать соответствующую страницу архива (например, example.com/events ), убедитесь, что вы зарегистрировали свой собственный тип сообщения с помощью 'has_archive' => true а затем создаете archive-events.php в своей теме (изменение events на независимо от того, что вы назвали своим CPT).

Чтобы показать только последнее сообщение, поставьте следующее, прежде чем называть свой материал:

global $query_string; query_posts( $query_string . '&posts_per_page=1' );

Если вы просто хотите перенаправить на этот последний, который кажется менее изящным, попробуйте поставить выше в начале, начиная цикл, а затем использовать PHP header() для перенаправления, возможно, используя 302 в качестве причины. Убедитесь, что нет выхода (даже пустые строки за пределами PHP-кода) перед вызовом header() . Также убедитесь, что у вас есть какой-то запасной вариант, если нет подходящего сообщения для запроса.

Вам не нужно ничего делать, кроме как зарегистрировать свой тип сообщения соответствующим образом: см. http://codex.wordpress.org/Function_Reference/register_post_type#Parameters

с publicly_queryable = true (я думаю, что значение по умолчанию – false)

Затем он будет автоматически иметь шаблон. Он будет использовать одно сообщение, если нет настраиваемого шаблона.

http://codex.wordpress.org/Template_Hierarchy#Single_Post_display .

См. Также http://justintadlock.com/archives/2010/04/29/custom-post-types-in-wordpress

Рабочий пример здесь: (использует по умолчанию шаблон для отдельной записи. Имеет фильтр для добавления некоторых данных события в контент для типов сообщений о событиях): http://test.icalevents.com/event/bunny-hop/