Nov10

wordpress 去掉固定链接中的子分类

wplogo-5

在最近做的这个项目,姑且这么叫做吧,遇到这样一个纠结我的问题,当我把固定连接设置为 http://www.newwebzen.com/%category%/%post_id%/
如果分类(cat)存在子分类(sub-cat)时,固定链接则为http://www.newwebzen.com/cat/sub-cat/123/,可我我希望的结果是http://www.newwebzen.com/cat/123/。

吐槽:我真想吐槽,白天工作之余也在搜索,晚上空闲更在搜索,开始用百度,后来发现不中用了,开始用google,我用的是google替代品gfsoso.com,虽然经历了若干无法访问,但是很明显地发现,英文世界里研究这个问题的人还是不少,中文世界里的都是复制、粘贴,一摸一样的东西,大网站、小网站一个劲的….

我贴几个网站:

http://wordpress.stackexchange.com/questions/103227/exclude-subcategories-from-the-url

http://stackoverflow.com/questions/25532157/remove-sub-category-slug-from-permalink-url-of-blog-post-and-custom-post-type-in?answertab=active#tab-top

http://bitsandbabble.com/2014/09/remove-subcategories-from-wordpress-permalinks/

https://wordpress.org/support/topic/remove-parent-category-from-permalink#post-1038484

下面还有类似的问题的帖子:

http://wordpress.stackexchange.com/questions/7807/changing-the-category-permalink-structure?rq=1

另外,这个问题我在wpdaxue也问了下,倡萌说他没写过,不过给了我一个办法,就是在添加文章的时候,同时勾选父分类和子分类,则固定链接只显示父分类,因为涉及上千文章,我没试验,但是确定能用,因为在英文世界我也找到过几次这样解决的方案。

后来,我抱着试试看的态度,在solagirl的文章留言,希望得到帮助,并且贴上我认为最可能实现的方法链接,最后……成功了!!!

这是我的留言地址:http://www.solagirl.net/permalink-with-html-suffix.html/comment-page-1#comment-59930

最后,附上代码:

<?php
// wordpress 去掉固定链接中的子分类
//感谢solagirl.net 话外篇请看:http://www.solagirl.net/permalink-with-html-suffix.html/comment-page-1#comment-59930
add_filter('post_link','custom_post_type_link',10,3); 
function custom_post_type_link($permalink, $post, $leavename) {
if (!gettype($post) == 'post') {
    return $permalink;}
switch ($post->post_type) {
    case 'post':
        //$permalink = get_home_url() . '/' . $post->post_name . '/';
        $cats = get_the_category($post->ID);
        $subcats = array();
        foreach( $cats as $cat ) {
            $cat = get_category($cat->term_id);
            //if($cat->parent) { $subcats[] = sanitize_title($cat->name); 
			if($cat->parent) { $subcats[] = $cat->slug;}}
        if($subcats) {
            foreach($subcats as $subcat) {
                $subcat = $subcat.'/';
                $permalink = str_replace($subcat, "", $permalink);}}
        break;}
return $permalink;}
?>

Comments文章评论2Click here to leave a response.

  1. 无措 says:

    对于这种千篇一律的复制,傻逼搜索引擎还全部靠前。

    真是让人觉得心烦意乱,想找一点什么东西都特别困难,我还以为只有国内这样。

    想不到英文网站也都这样。