好的,找到了(a?)解决方案
"rewrite" => array( "slug" => "activity", "with_front" => false ),
以及
function my_injecter_agence_in_activite_url( $post_link, $id = 0 ) {
$post = get_post( $id );
if ( $post->post_type == \'activity\' || \'publish\' == $post->post_status )
{
$terms = wp_get_object_terms( $post->ID, \'agence\' );
if ( $terms )
{
$post_link = str_replace("activity", $terms[0]->slug.\'/activite\', $post_link);
return $post_link;
}
}
return $post_link;
}
add_filter( \'post_type_link\', \'my_injecter_agence_in_activite_url\', 1, 3 );
function my_rewrite_rules()
{
add_rewrite_rule(
\'(.*)\\/activity\\/(.*)?$\',
\'index.php?post_type=activity&name=$matches[2]\',
\'top\'
);
}
add_action( \'init\', \'my_rewrite_rules\' );
我很接近。我想我最初的str\\u替换有问题。
现在,帖子、页面或活动都没有被破坏,一切似乎都正常。
URL中用作前缀的自定义分类术语纯粹是修饰性的,如果两个活动具有相同的slug,我无法消除歧义,但我认为这不应该发生,因为WP不允许我有两个具有相同slug的帖子。
现在,我只需要找到一种方法,确保如果在错误的术语中查找活动,就会出现404错误(例如,如果试图访问example.com/newyork/activity/bike tour in miami)
如果有人有更好的方法,请告诉我。