默认WordPress页面不能实现伪静态链接,比如:http://xxx.com/xxx.html,手动在链接中添加“.html”,会自动转码为"-html",但万能的WordPress,你能想到的功能都会有相应的插件帮你实现。
为wordpress分类、页面和标签页固定链接添加.html后缀,通过插件可以实现这一功能。
既然用插件可以实现,直接将插件中的代码集成到主题中同样也可以,代码提取自.html on PAGES插件,将下面代码添加主题functions.php中即可。


// 页面链接添加html后缀
add_action('init', 'html_page_permalink', -1);
function html_page_permalink() {
    global $wp_rewrite;
    if ( !strpos($wp_rewrite->get_page_permastruct(), '.html')){
        $wp_rewrite->page_structure = $wp_rewrite->page_structure . '.html';
    }
}

添加后,需要到固定链接设置页面,重新保存一下固定链接设置,否则不会生效。
上述代码适合伪静态的固定链接形式使用,比如:


/%postname%.html
/%post_id%.html

另外,如果同时使用了“给WordPress分类目录和页面添加斜杠”一文中的代码,还需要将该文中的代码修改为:


// 添加斜杠
function nice_trailingslashit($string, $type_of_url) {
    if ( $type_of_url != 'single' && $type_of_url != 'page' )
      $string = trailingslashit($string);
    return $string;
}
add_filter('user_trailingslashit', 'nice_trailingslashit', 10, 2);

排除页面文件,否则页面链接.html后面也会自动加上斜杠。

wordpress分类、页面、标签的URL添加html后缀


/* 自定义category、tag、page页面url
/* ******************************************** */
function custom_page_rules() {
    global $wp_rewrite;
    /** page页面自定义URL样式 **/
    $wp_rewrite->page_structure = $wp_rewrite->root . 'post/%pagename%.html';
    /** tag页面自定义URL样式 **/
    $wp_rewrite->extra_permastructs['post_tag']['with_front'] = '';
    $wp_rewrite->extra_permastructs['post_tag']['struct'] = $wp_rewrite->extra_permastructs['post_tag']['with_front'] . 'tag/%post_tag%.html';
    /** category页面自定义URL样式 **/
    $wp_rewrite->extra_permastructs['category']['with_front'] = 'category';
    $wp_rewrite -> extra_permastructs['category']['struct'] = $wp_rewrite->extra_permastructs['category']['with_front'].'/%category%.html';
}
add_action( 'init', 'custom_page_rules' );

代码很简洁主要就是对$wp_rewrite全局函数的部分内容进行重写然后实现我们需要的功能,上面的diamagnetic包含了 page页面自定义URL样式、tag页面自定义URL样式、 category页面自定义URL样式 大家可以根据自己的需求做删减和修改。

瑞课支付