自定义POST类型-在固定链接结构中使用post_id

时间:2012-03-01 作者:Scott

我正在注册我的CPT,如下所示:

$args = array(
    \'labels\' => $labels,
    \'public\' => true,
    \'hierarchical\' => false,
    \'rewrite\' => array(
        \'with_front\' => false,
        \'slug\' => \'news/events\'
    ),
    \'supports\' => array( \'title\', \'editor\', \'thumbnail\' )
);
register_post_type(\'events\',$args);
现在将生成如下的后永久链接:/news/events/{post_name}/ 但我想要以下permalink结构:/news/events/{post_id}/{post_name}/.

我该怎么做?

2 个回复
最合适的回答,由SO网友:Scott 整理而成

@BainerNet-您的答案没有完全起作用,但我进行了更多的搜索,并能够将这个过滤器组合在一起,确实起到了作用:

add_filter(\'post_type_link\', \'custom_event_permalink\', 1, 3);
function custom_event_permalink($post_link, $id = 0, $leavename) {
    if ( strpos(\'%event_id%\', $post_link) === \'FALSE\' ) {
        return $post_link;
    }
    $post = &get_post($id);
    if ( is_wp_error($post) || $post->post_type != \'events\' ) {
        return $post_link;
    }
    return str_replace(\'%event_id%\', $post->ID, $post_link);
}
+1让我大功告成

SO网友:Bainternet

尝试首次添加到%event_id% 给你的鼻涕虫:

$args = array(
    \'labels\' => $labels,
    \'public\' => true,
    \'hierarchical\' => false,
    \'rewrite\' => array(
        \'with_front\' => false,
        \'slug\' => \'news/events/%event_id%/%postname%\'
    ),
    \'supports\' => array( \'title\', \'editor\', \'thumbnail\' )
);
register_post_type(\'events\',$args);
然后将筛选器添加到单个事件预链接:

add_filter(\'post_type_link\', \'custom_event_permalink\', 1, 3);
function custom_event_permalink($post_link, $id = 0, $leavename) {
    global $wp_rewrite;
    $post = &get_post($id);
    if ( is_wp_error( $post )  || \'events\' != $post->post_type)
        return $post_link;
    $newlink = $wp_rewrite->get_extra_permastruct(\'events\');
    $newlink = str_replace("%event_id%", $post->ID, $newlink);
    $newlink = home_url(user_trailingslashit($newlink));
    return $newlink;
}
这应该能奏效,但它是untested. 并确保刷新重写规则。

结束

相关推荐

All in One Seo and Permalinks

我正在使用多功能搜索引擎优化,对于帖子标题格式选项,我将其作为:%post\\u标题%kewyord1关键字2等关键字1,关键字2是我为我的网站选择的关键字此外,在Permalinks中,我将其命名为/%postname%/,以便帖子名称显示在短链接/url中因此,使用这些配置,如果我在标题中使用“Books”进行发布,它将如下所示:Books关键字1关键字2等但该帖子的短链接或实际url如下所示:www.mydomain。com/书籍它不包含我在搜索引擎优化中指定的所有关键字我试着将Permalink更