代码之家  ›  专栏  ›  技术社区  ›  Thiago Belem

将wordpress上的post permalink结构更改为使用自定义分类法

  •  0
  • Thiago Belem  · 技术社区  · 14 年前

    我想更改WordPress3.0-beta1上的post-permaLink模式,以使用我的新自定义分类法。

    今天我可以用 /%category%/%postname%/ 以及 /my-category/my-post/ URL,这很好,但我需要使用另一种分类法,而不是“类别”分类法。

    我试着用 /%acervo%/%postname%/ 但是我的网址 %acervo% 在URL上,而不是 阿塞沃 “(我的分类名称)该文章所属的。

    我发现了一些与 WP_Rewrite 但是没有成功…

    4 回复  |  直到 12 年前
        1
  •  0
  •   hsatterwhite    14 年前

    你可以尝试使用WordPress插件, No Category Base ,然后用postname通配符硬编码分类,如下所示:

    /acervo/%postname%/
    

    请注意,acervo没有百分比符号,因为它是“硬编码”的,而不是通配符。

        2
  •  0
  •   markratledge    14 年前

    只需在 Dashboard/Settings/Permalinks 不需要先去掉类别库,然后再将其添加进去。

        3
  •  0
  •   Thiago Belem    14 年前

    我明白了…将永久链接结构更改为 /%acervos%/%postname%/ 然后潜入wp-rewrite并添加了一个新的“替换标签”替换 %acervos% 具有 (.*) 正则表达式

        4
  •  0
  •   maukoquiroga    14 年前

    这应该是技巧。

    function acervo_permalink($permalink, $post_id, $leavename){
        if (get_option('permalink_structure') != ''){
            $post = get_post($post_id);
            $rewritecode = array(
                '%acervo%'
            );
            if (strpos($permalink, '%acervo%') !== FALSE){   
                $terms = wp_get_object_terms($post->ID, 'acervo');  
                if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) $acervo = $terms[0]->slug;
                else $acervo = '';
            }
            $rewritereplace = array(
                $acervo
            );
            $permalink = str_replace($rewritecode, $rewritereplace, $permalink);
        } 
        return $permalink;
    }