@dotty 正如您可以从这张trac票据中看到的:There should be index pages for custom post types 因此,很明显,WordPress核心尚未解决这一需求。
“约翰·P·布洛赫”和“克里斯·O”都给了你很好的选择;我会给你第三个。
A“产品”页面
首先创建
Page 用于自定义帖子类型,并将其称为“产品”。这将为其提供以下URL:
http://example.php/products/
一个“产品列表”短代码
下一步创建一个
Shortcode 你可以将其嵌入你的
“产品”页面。在我的例子中,我称之为
[product-list]
. 下面是使用它的屏幕截图:
(来源:mikeschinkel.com)
请注意,这样的短代码非常适合添加许多可选功能,并使其能够用于许多不同的帖子类型,但为了清晰起见,我几乎对所有内容都进行了硬编码。当然,您可以将其作为自己的短代码的起点:
<?php
add_shortcode(\'product-list\', \'my_product_list\');
function my_product_list($args) {
$save_post = $GLOBALS[\'post\']; // Save state so you can restore later
$post_type = \'product\';
$template_file = get_stylesheet_directory() . "/post-{$post_type}.php";
if (!file_exists($template_file)) {
return "<p>Missing template [$template_file].</p>";
} else {
global $post;
$q = new WP_Query("showposts=10&post_type={$post_type}&orderby=title&order=ASC");
$rows = array();
$rows[] = \'<div class="post-list \' . $post_type . \'-post-list">\';
global $post_list_data;
$post_list_data = array();
$post_list_data[\'post_count\'] = $post_count = count($q->posts);
foreach ($q->posts as $post) {
$q->the_post();
ob_start();
include($template_file);
$rows[] = ob_get_clean();
}
$rows[] = \'</div>\';
$GLOBALS[\'post\'] = $save_post;
return implode("\\n",$rows);
}
}
Apost-product.php
主题模板文件
接下来,您需要创建一个只显示一个产品的主题模板文件。实现快捷码的函数将模板文件命名为
post-product.php
这里有一个很好的起点:
<?php
/**
* post-product.php - File to display only one product within a list of products.
*/
?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<h2 class="entry-title"><?php the_title(); ?></h2>
<div class="entry-content">
<?php the_content(); ?>
</div>
</div>
添加菜单选项最后您将要添加菜单选项。从这个屏幕截图中可以看出,这非常简单(以下假设您之前没有使用WordPress 3.0菜单,并且您使用的主题支持WordPress 3.0菜单,例如二十个十):
在管理菜单中选择菜单选项单击"+" 添加新菜单输入菜单名称,随你喜欢单击“创建菜单”按钮(屏幕截图显示“保存菜单”,但添加时将显示“创建菜单”。)
选择新菜单作为“主导航”选择您的产品页面单击“添加到菜单”按钮
(来源:mikeschinkel.com)最后是输出,下面是基本产品列表的内容:
(来源:mikeschinkel.com)