我已在WordPress中创建了一个名为“minutes”的自定义文章类型,并使用以下PHP代码为该文章类型添加了归档功能:
add_filter( 'getarchives_where', 'getarchives_where_filter', 10, 2 );
add_filter( 'generate_rewrite_rules', 'generate_minutes_rewrite_rules' );
function getarchives_where_filter( $where, $args ) {
if ( isset($args['post_type']) ) {
$where = "WHERE post_type = '$args[post_type]' AND post_status = 'publish'";
}
return $where;
}
function generate_minutes_rewrite_rules( $wp_rewrite ) {
$minutes_rules = array(
'minutes/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$' => 'index.php?post_type=minutes&year=$matches[1]&monthnum=$matches[2]&day=$matches[3]',
'minutes/([0-9]{4})/([0-9]{1,2})/?$' => 'index.php?post_type=minutes&year=$matches[1]&monthnum=$matches[2]',
'minutes/([0-9]{4})/?$' => 'index.php?post_type=minutes&year=$matches[1]'
);
$wp_rewrite->rules = $minutes_rules + $wp_rewrite->rules;
}
function get_archives_minutes_link( $link ) {
return str_replace( get_site_url(), get_site_url() . '/minutes', $link );
};
add_filter( 'get_archives_link', 'get_archives_minutes_link', 10, 2 );
wp_get_archives( array( 'post_type' => 'minutes' ) );
wp_get_archives( array( 'post_type' => 'minutes', 'type' => 'yearly' ) );
wp_get_archives( array( 'post_type' => 'minutes', 'type' => 'monthly' ) );
wp_get_archives( array( 'post_type' => 'minutes', 'type' => 'daily' ) );
remove_filter( 'get_archives_link', 'get_archives_minutes_link', 10, 2 );
同时,在我的单篇文章模板中,为了创建一个按月的侧边栏,我使用了如下代码。但是即使我已经重新保存了固定链接,按月归档链接仍然无法正确跳转到相应的归档页面。
对于这个问题,请问有解决方案吗?