是否关闭%postname%自动递增?

时间:2011-01-27 作者:Thompson

我使用permalink结构/%post\\u id%/%postname%,因为我有用户提交的内容。问题是%postname%仍然会自动递增,而且看起来很有趣,即使post id使其唯一。有没有办法禁用%postname%自动递增?

领域com/634/apple-pie
域。com/635/apple-pie-2域。com/636/apple-pie-3

应为:

领域com/634/apple-pie
域。com/635/apple-pie
域。com/636/苹果派

如果您可以仅针对指定的自定义帖子类型执行此操作,则可获得额外积分。

2 个回复
SO网友:MikeSchinkel

你好@Thompson:

不幸地the post name must be unique for a given post type, 和层次结构级别(如果职位类型为层次结构)。

有几种方法可以解决此问题:

使用/%post_id%-%postname%/ 而不是/%post_id%/%postname%/; 这使得它独一无二,因此不会附加任何恼人的内容-N,并将使您的搜索引擎优化略有改善,因为重要的关键字将位于网站根目录中,而不是一个目录级别。或

如果必须具有指定的URL结构,则可以将永久链接设置为/%post_id%/ 并使用\'post_link\'\'init\' 钩子,允许您分别将帖子名称附加到URL上,并添加与post_id, 斜线,以及斜线之后的任何内容,但会将后两者丢弃,因为它们不用于永久链接结构:

add_filter(\'post_link\', \'mysite_post_link\',10,2);
function mysite_post_link($permalink,$post) {
  $post = get_post($post);
  return "{$permalink}{$post->post_name}/";
}
add_action(\'init\', \'mysite_init\');
function mysite_init() {
  global $wp_rewrite;
  $wp_rewrite->add_permastruct("user_submitted_post",
    \'%post_id%/.*?\', 
    \'p=matches[1]\');
  $wp_rewrite->flush_rules();  // This line is only needed once
}

SO网友:Rarst

Try this:

add_filter(\'wp_insert_post_data\', \'remove_slug_suffix\');

function remove_slug_suffix($data) {

    if (\'post\' == $data[\'post_type\'])
        $data[\'post_name\'] = preg_replace(\'/-\\d+$/\', \'\', $data[\'post_name\']);

    return $data;
}
结束

相关推荐