Answers:
@dotty正如您从这张跟踪单上看到的那样:应该有用于自定义帖子类型的索引页,因此显然WordPress核心中尚未解决此需求。
@John P Bloch和@Chris_O都为您提供了不错的选择;我要给你第三。
首先为您的自定义帖子类型创建一个页面,并将其称为“产品”。这将为它提供以下URL:
接下来,创建一个可以嵌入到“产品”页面的简码。在我的例子中,我称之为。这是使用它的屏幕截图:[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);
}
}
post-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)
current-menu-item
类不应用于产品 'li
WordPress本身不支持此功能。但是,您可以将其添加到您的functions.php文件中,它将起作用:
function give_me_a_list_of_products(){
add_rewrite_rule( 'products/?$', 'index.php?post_type=products', 'top' );
}
add_action( 'init', 'give_me_a_list_of_products' );
这将为您提供example.com/products/产品列表。从那里,您只需向菜单添加自定义链接。
但是,如果您想使用提要进行真正的归档(按月,年等),则需要更详细的代码。如果您的“产品”是非分层帖子类型(似乎应该是这样),则可以使用我的插件:
http://www.wordpress.org/extend/plugins/custom-post-permalinks/
这为您提供了额外的字段来自定义永久链接(就像您对博客文章一样),并使您能够根据类别,作者,月份,年份,帖子类型等自定义永久链接。
据我所知,我只能向其中添加某些“产品”,而不能添加产品的“存档”。我想做的是在菜单上添加一个链接,以转到列出所有产品的页面。任何想法如何做到这一点?
您需要为“产品”帖子类型分配一个分类法,然后将分类法术语添加到您的一个自定义菜单中,然后将用户带到所使用分类法下所有产品的存档页面。
示例 我有一个名为“工作”的自定义帖子类型,其分类法标记为“职位”
如果我希望使用“当前空缺”分类术语的所有工作,则将其选中并将其添加到菜单中。
如果需要在存档页面上拥有所有“产品”帖子类型,则可以为所有这些类别分配父分类法,以便将它们全部列在存档页面上。
我认为,通过自定义帖子类型创建帖子类型“存档”并在此存档中移动已存档的帖子是一个更好的解决方案。还将当前post_type添加到此新post_type的postmeta中,以撤消此操作。我为此编写了一个插件,目前,您可以在gist.github / 978690上看到此插件,没有样式表,图像和语言文件。