P粉6052337642023-07-28 00:14:02
你可以尝试这样做:
在mycustomname_link函数中,我们添加了一个循环,遍历$custom_post_types数组。对于每个自定义文章类型,它会检查当前的文章类型是否与数组中的任何名称匹配。如果有匹配,将应用重写规则。
同样,在mycustomname_rewrites_init函数中,我们添加了一个循环来注册所有自定义文章类型的重写规则。每个自定义文章类型都将有自己的重写规则。
通过这种修改,重写规则将应用于$custom_post_types数组中指定的所有自定义文章类型,而不会在第一次迭代时停止。确保更新$custom_post_types数组,其中包含你想在重写规则中包含的所有自定义文章类型的名称。
function mycustomname_link($post_link, $post = 0) { $custom_post_types = array('name_of_my_post', 'another_post_type', 'yet_another_post_type'); // Add all your custom post type names here foreach ($custom_post_types as $post_type) { if ($post->post_type === $post_type) { return home_url('new' .'/'. 'posts'.'/'. $post->post_name .'/'. $post->ID . '/'); } } return $post_link; } add_filter('post_type_link', 'mycustomname_link', 10, 2); function mycustomname_rewrites_init(){ $custom_post_types = array('name_of_my_post', 'another_post_type', 'yet_another_post_type'); // Add all your custom post type names here foreach ($custom_post_types as $post_type) { add_rewrite_rule('new/posts/([^/]+)/([0-9]+)?$', 'index.php?post_type=' . $post_type . '&p=$matches[1]&p=$matches[2]', 'top'); } flush_rewrite_rules(); } add_action('init', 'mycustomname_rewrites_init');