wordpress主题

wordpress的自定义文章的重写链接permalink ,以避免中文标题

日期:2014-11-28 阅读:3360

dmandwp系统 - wordpress系统和DM系统区块建站>>

wordpress的自定义文章的重写链接permalink ,以避免中文标题

进入网易云课堂播放
    |    更多视频教程>

上一节课我们讲了自定义文章类型和分类。

但是自定义文章类型的premalink会是标题,如果是中文的话,如果你的web服务器不支持,就不能访问了。

如果当前文章的标题是手机,那么url会是:

www.yoursite.com/?tvproduct=手机

可以让url更友好:

第一步:你在types插件可以配置成 www.yoursite.com//tvproduct/手机

第二步:后台的premalink也要设置为非默认 ,也就是要重写了。

---这步很重要,也就是说 types里,文章和分类的类型设置里,如果设为重写的话,那后台的premalink也要设置,要一致。

--------------------

但不管怎么样,都是有中文的。

其实我们想要的是 /?post_type=tvproduct&p=58 或者是 /tvproduct/58 或 /tvproduct/58.html, 也就是把中文标题换成id就可以了

那怎么办:

参考代码:

在function.php加:

add_filter('post_type_link', 'custom_book_link', 1, 3);
function custom_book_link( $link, $post = 0 ){ //第一步,转化url
    if ( $post->post_type == 'tvproduct' ){
        $returnlink = '?post_type=tvproduct&p='.$post->ID;
        //return home_url($returnlink);
        return home_url( 'tvproduct/' . $post->ID .'.html' );  //这里改成htm或去掉都可以,但后台premalink要重新保存下才行
    } else {
        return $link;
    }
}
add_action( 'init', 'custom_book_rewrites_init' ); // 第二步,这是表示要重写,不然没法支持这种url写法
function custom_book_rewrites_init(){
    add_rewrite_rule(
        'tvproduct/([0-9]+)?.html$',
        'index.php?post_type=tvproduct&p=$matches[1]',
        'top' );
}

---------------------------

如果是多个文章类型,则要:
(需要一点php就能看的懂。)

$mytypes = array(//根据需要添加你的自定义文章类型
    'tvproduct' => 'tvproduct',
    'type2' => 'slug2',
    'type3' => 'slug3'
    );
add_filter('post_type_link', 'my_custom_post_type_link', 1, 3);
function my_custom_post_type_link( $link, $post = 0 ){
    global $mytypes;
    if ( in_array( $post->post_type,array_keys($mytypes) ) ){
        return home_url( $mytypes[$post->post_type].'/' . $post->ID .'.html' );
    } else {
        return $link;
    }
}
add_action( 'init', 'my_custom_post_type_rewrites_init' );
function my_custom_post_type_rewrites_init(){
    global $mytypes;
    foreach( $mytypes as $k => $v ) {
        add_rewrite_rule(
            $v.'/([0-9]+)?.html$',
            'index.php?post_type='.$k.'&p=$matches[1]',
            'top' );
    }
}

 

参考资料:http://www.solagirl.net/custom-post-type-permalink.html

 

 

<<点击返回