显示模板中的自定义帖子类型

时间:2011-09-06 作者:Richard

我有一个名为Events的模板文件。此文件的目的只是显示具有自定义类型事件的最新帖子。我已经用一个非常丑陋的解决方案解决了它。必须有一种更简单、更正确的方法来做到这一点。如果您检查我的代码,我确信您了解我要完成的任务:)

提前感谢!

<?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>

Cleaner solution:

<?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);
?>

2 个回复
最合适的回答,由SO网友:helenhousandi 整理而成

如果您想使用正确的存档页面(例如。example.com/events), 确保将自定义帖子类型注册到\'has_archive\' => true 然后创建archive-events.php 在您的主题中(更改events 无论您将CPT命名为什么)。

要仅显示最新帖子,请在调用循环内容之前放置以下内容:

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

如果您只想重定向到最新的一个,它看起来不那么优雅,请尝试将上述内容放在开头,启动循环,然后使用PHPheader() 要重定向,可能使用302 作为理由。确保有no 在调用之前输出(甚至PHP代码之外的空行)header(). 还请确保有某种回退,以防查询中没有匹配的帖子。

SO网友:anmari

您无需执行任何操作,只需适当注册您的帖子类型:请参阅http://codex.wordpress.org/Function_Reference/register_post_type#Parameters

public\\u queryable=true(我认为默认值为false)

然后它将自动拥有一个模板。如果没有自定义模板,它将使用单个帖子。

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

另请参见http://justintadlock.com/archives/2010/04/29/custom-post-types-in-wordpress

此处的工作示例:(使用默认模板single post。有一个过滤器可将一些事件数据添加到事件帖子类型的内容中):http://test.icalevents.com/event/bunny-hop/

结束

相关推荐