这可以通过一些自定义过滤器来实现;行动。
尝试将此代码放置在主题的函数中。php文件:
add_filter( \'post_link\', \'custom_permalink\', 10, 3 );
function custom_permalink( $permalink, $post, $leavename ) {
// Get the categories for the post
$category = get_the_category($post->ID);
if ( !empty($category) && $category[0]->cat_name == "News" ) {
$permalink = trailingslashit( home_url(\'/\'. $post->post_name .\'-\'. $post->ID .\'/\' ) );
}
return $permalink;
}
add_action(\'generate_rewrite_rules\', \'custom_rewrite_rules\');
function custom_rewrite_rules( $wp_rewrite ) {
// This rule will will match the post id in %postname%-%post_id% struture
$new_rules[\'^([^/]*)-([0-9]+)/?\'] = \'index.php?p=$matches[2]\';
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
return $wp_rewrite;
}
这将为新闻类别中的帖子设置permalink结构,还将转换如下所示的请求URI:
/news-headline-text-01234
对此:
/index.php?p=1234
来源:这个问题是
already asked on wordpress.org 我的答案是基于那里提供的解决方案。
Edit: 更新了重写正则表达式和规则,以匹配%postname%-%post\\u id%链接结构中的帖子id。2 测试并确认当前代码。