好吧,我终于明白了。最后,我不得不妥协,以防同一物品有多个位置标签,但我对它的工作方式感到高兴。
首先,我必须改变permalink结构(感谢Milo),如下所示:
function get_real_link_please( $url, $post ) {
if ( $post->post_type == \'organization\' ){
$loc_list = wp_get_post_terms($post->ID, \'my_locations\');
$location = $loc_list[0]->slug; //get first item in case there is more than one
return home_url( $location . \'/organization/\' . $post->post_name, $url );
}
return $url;
}
add_filter( \'post_type_link\', \'get_real_link_please\', 10, 2 );
然后,我必须确保我的重写规则考虑到了这一点:
add_action( \'init\', \'cpt_rewrite_link\' );
function cpt_rewrite_link(){
add_rewrite_rule( \'([^/]+)/([^/]*)/([^/]*)/\', \'index.php?my_locations=$matches[1]&post_type=$matches[2]&name=$matches[3]\', \'top\' );
}
最后(非常重要!),我必须确保我的cpt事实上是可以公开查询的:
,\'publicly_queryable\' => true
唯一能让我更开心的是,如果我能找到一种方法,为多个位置创建多个永久链接,但由于其他链接也可以,所以第一个位置可以是“官方”位置。希望这对其他人有帮助,这是一只熊。