如果您只想在URL中使用“division”,那么技巧是使用slug选项注册自定义帖子类型:
\'rewrite\' => array( \'slug\' => \'division\', \'with_front\' => false ),
然而,由于您想用division标记的当前值替换单词division,因此答案更有趣。
您需要做的是声明您自己的重写标记:%division%
global $wp_rewrite;
$wp_rewrite->add_rewrite_tag(\'%division%\', \'(.+?/)?\', \'division=\');
然后你的子弹被宣布如下:
\'rewrite\' => array( \'slug\' => \'%division%\', \'with_front\' => false ),
然后,您必须挂接post\\u type\\u link函数,以便能够解析标记。
add_filter(\'post_type_link\', \'division_permalink\', 10, 3);
function division_permalink($permalink, $post_id, $leavename) {
if (strpos($permalink, \'%division%\') === FALSE) return $permalink;
// Get post
$post = get_post($post_id);
if (!$post) return $permalink;
// Get taxonomy terms
$terms = wp_get_object_terms($post->ID, \'division\');
if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) $taxonomy_slug = $terms[0]->slug;
else $taxonomy_slug = \'division-missing\';
return str_replace(\'%division%\', $taxonomy_slug, $permalink);
}
Note: 未经测试的代码,如果您需要修复任何东西以使其正常工作,请告知我们。特别是,我通常会使用division/%division%格式,因此如果没有静态字符串放在动态部分前面,即像这样的URL:division/%division%/页,则此代码可能无法工作。php
Useful \'custom rewrite tag for custom post type\' tutorials on the web:
Interesting Custom Post Type Slug with Taxonomy and Custom Field
http://xplus3.net/2010/10/04/wp-rewrite-tags-in-permalinks/
http://shibashake.com/wordpress-theme/add-custom-taxonomy-tags-to-your-wordpress-permalinks
Additional Note:
如果上面提供的代码没有静态前缀(即“division/%division%”)就无法工作,并且您确实需要它,那么我建议仔细阅读此插件的代码:
http://wordpress.org/extend/plugins/wp-no-category-base/
它只有93行(其中26行是标识插件和指定GPL许可的注释)。如果您可以将该逻辑复制到您的CPT中,并将其与上述内容结合起来,我怀疑它会起作用。