一个简单的解决方案是使用rewrite
和\'with_front
注册post类型时的参数。试试这个。。
\'with_front\' => false,
\'rewrite\' => array( \'slug\' => \'%services%/%areas%\'),
然后将过滤器添加到
post_type_link
用术语替换标记。
function wpse277778_rewrite_urls( $url, $post ) {
if ( \'listings\' == get_post_type( $post ) ) {
$services = wp_get_post_terms( $post->ID, \'services\' );
$areas = wp_get_post_terms( $post->ID, \'areas\' );
$url = str_replace( \'%services%\', $services[0]->slug, $url );
$url = str_replace( \'%areas%\', $areas[0]->slug, $url );
}
return $url;
}
add_filter( \'post_type_link\', \'wpse277778_rewrite_urls\', 10, 2 );
请注意,这是一个基本代码,您需要使用条件标记进行一些检查,以无错误地输出
$url
. 此外,如果没有相关术语,您应该设置默认服务和区域。