不将自定义发布类型slug更改为唯一值

时间:2013-02-06 作者:Mike Madern

我有一个需要的情况,如果我创建两个CPT页面,它们都有相同的名称和相同的slug。

例如,如果我添加两个CPT页面,这两个页面都称为“Post-Name”:
第一个slug将是“Post-Name”,第二个slug将是“Post-Name-2”。

因为我在permalink结构中添加了一个自定义部分,这将使URL唯一:

function extra_post_link( $permalink, $post, $leavename ) {
    global $wp_rewrite;

    if ( stripos( $permalink, \'%selected_meta%\' ) == false )
        return $permalink;

    if ( is_object( $post ) && ($post->post_type == \'ervaring\' || $post->post_type == \'lening\') ) {
        $_selected_post_slug = \'\';
        $_selected_post_id = get_post_meta( $post->ID, \'rating-post\', true );

        if ( $_selected_post_id )
            $_selected_post_slug = get_page_uri( $_selected_post_id );

        return str_replace( \'%selected_meta%\', $_selected_post_slug, $permalink );
    }

    return $permalink;
}

add_filter( \'post_type_link\', \'extra_post_link\', 10, 3 );
如何防止WordPress这样做?

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

您可以考虑使用“wp\\u unique\\u post\\u slug”过滤器:

   add_filter( \'wp_unique_post_slug\',\'my_disable_unique_slug\',11,6);
    function disable_unique_slug( $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug ){
        global $post;       
        if($post->post_type==\'cpt\'){ // EDIT post type
            $slug=$original_slug;
        }
        return $slug;
    }
这是未经测试的,但你明白了;-)

附言:你可能需要改变其他东西才能使这项工作成功,因为独特性非常重要。

结束

相关推荐

Include taxonomy slug in url?

我有以下自定义帖子类型和自定义分类设置:add_action( \'init\', \'create_post_type\' ); function create_post_type() { register_post_type( \'system\', array( \'labels\' => array( \'name\' => __( \'Systems\' ),&#x