是否有一种方法可以对站点上的所有(非层次)帖子类型(包括帖子和自定义帖子类型)使用完全相同的基于日期的永久链接结构?
我希望所有的帖子类型都有这样的格式/%year%/%monthnum%/%day%/%postname%/
, 因此,帖子类型不会出现在URL中。
使用默认的自定义post-type-permalink结构,以下代码成功地从permalink中删除了post-type(有可能导致帖子名称冲突的问题,但我可以接受),但我不知道如何设置permalink以使用日期结构。
class simons_permalinks {
function __construct() {
add_action( \'pre_get_posts\', array( $this, \'pre_remove_slug\' ) );
add_filter( \'post_type_link\', array( $this, \'remove_slug\' ), 10, 3 );
}
function pre_remove_slug( $query ) {
if ( ! $query->is_main_query() )
return;
if ( 2 != count( $query->query ) or !isset( $query->query[ \'page\' ] ) )
return;
$types = array( \'page\', \'post\', \'feature\', \'opinion\' );
if ( ! empty( $query->query[ \'name\' ] ) ) {
$query->set( \'post_type\', $types );
}
}
function remove_slug( $link, $post, $name ) {
$types = array( \'post\', \'feature\', \'opinion\' );
if ( \'post\' != $post->post_type and in_array( $post->post_type, $types ) and \'publish\' == $post->post_status ) {
$pto = get_post_type_object( $post->post_type );
$link = str_replace( \'/\' . $pto->rewrite[ \'slug\' ] . \'/\', \'/\', $link );
}
return $link;
}
} // class
谢谢Simon