Answers:
嗨@Silent:
事实证明WordPress 3.1中有一个功能可以完全满足您的要求,并被命名为get_post_type_archive_link()
;这是您的称呼方式(假设名为的自定义帖子类型'product'
):
<a href="<?php echo get_post_type_archive_link('product'); ?>">Products</a>
在发现WordPress确实具有此用例的内置功能之前,以下是我的先前回答。
除非我忽略了WordPress 3.1的核心源代码中的某些内容,否则我认为您正在寻找一个可以像get_archive_link()
这样调用的函数(假设名为的自定义帖子类型'product'
):
<a href="<?php echo get_archive_link('product'); ?>">Products</a>
这是源代码,您可以将其放入主题function.php
文件或.php
您可能正在编写的插件文件中:
if (!function_exists('get_archive_link')) {
function get_archive_link( $post_type ) {
global $wp_post_types;
$archive_link = false;
if (isset($wp_post_types[$post_type])) {
$wp_post_type = $wp_post_types[$post_type];
if ($wp_post_type->publicly_queryable)
if ($wp_post_type->has_archive && $wp_post_type->has_archive!==true)
$slug = $wp_post_type->has_archive;
else if (isset($wp_post_type->rewrite['slug']))
$slug = $wp_post_type->rewrite['slug'];
else
$slug = $post_type;
$archive_link = get_option( 'siteurl' ) . "/{$slug}/";
}
return apply_filters( 'archive_link', $archive_link, $post_type );
}
}
尽管实际上我还不能100%地确定WordPress可能会在所有用例中使用的逻辑正确,但我仍在100%地确定该逻辑的顺序是正确的,尽管它可能适用于任何特定站点。
建议通过trac将其添加到WordPress,这也是一件好事,我想我会在今天晚些时候做。
当您注册帖子类型时,您可以使用“ has_archive”参数将字符串作为子句传递,并确保您还将rewrite设置为true或数组,但不能设置为false,然后CPT存档URL将为http://www.YOURDOMAIN.com / has_archive_slug例如
例如,如果您在register_post_type中设置:
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => 'product',
'capability_type' => 'post',
'has_archive' => 'products',
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title','editor','author','thumbnail','excerpt','comments')
);
register_post_type('product',$args);
那么您的单个网址是:http : //www.YOURDOMAIN.com/product/postName, 而您的存档网址是:http : //www.YOURDOMAIN.com/products/
has_archive
是布尔值,但是现在我知道可以给它一个字符串,所以我的单数自定义帖子类型recipe
可以有一个复数形式/recipes/
'rewrite'
年仅接受布尔值或数组值。而不是'rewrite' => 'product',
您列出的清单,应该改为'rewrite' => array( 'slug' => 'product' ),
。
yoursite.com/type-slug
除非您明确将存档URL 设置为其他内容,否则通常为存档URL 。yoursite.com/some-other-url
..