使用 wordpress 建站的各位同学应该都知道,可以设置自己认为合适的固定链接。
我原来想用自定义结构:/%post_id%.html 的方式,但发现这样的链接会比较难看,主要是因为 wordpress 的 id 并不连续,比如像我现在这个站,只是试着发了 2 篇文章,id 就已经到 45 了,对于我这种具有强迫症的患者来说,实在是非常无奈。那我们能不能用别名的方式并且用函数自动生成固定长度的别名呢?答案是肯定的。
![图片[1] - 优化 WordPress 的固定链接形式之我见 - 搜集网](https://www.suujee.com/wp-content/uploads/2023/01/287853109a82-1024x559.png)
第一步:修改自定义结构为:/%postname%.html
第二步:把以下函数代码复制到所用主题的 functions.php 底部保存。
//固定连接结构为 %postname% 时,自动使用年+0+文章 ID 共 7 位数做别名
add_action( 'save_post', 'using_id_as_slug', 10, 2 );
function using_id_as_slug($post_id, $post){
global $post_type;
if($post_type=='post'){ //只对文章生效
//如果已经存在别名则停止运行,避免修改文章导致网址出现变化
if(get_post( $post_id )->post_name)
return false;
// 取消挂载该函数,防止无限循环
remove_action('save_post', 'using_id_as_slug' );
//使用年份、文章 ID 和随机数做别名
$id = "0000".$post -> ID; //文章 ID 前加上 4 个零
$id = substr($id,-5); //从后往前取 5 位数
$cccitu_slug= date('y').$id; //取年的 2 位数和 0 与文章 ID 的 5 位数组合为 7 位数
wp_update_post(array('ID' => $post_id, 'post_name' => $cccitu_slug ));
// 重新挂载该函数
add_action('save_post', 'using_id_as_slug' );
}
}
需要注意的是,这个最好在最初建站时就设置好且不宜在后期改动,否则对 SEO 是不利的。 另外,附送一个分类和标签增加 / 的代码,因为自定义结构加 .html 后,分类和标签尾部的斜杠会消失。
//给标签和分类增加斜杠
function nice_trailingslashit($string, $type_of_url) {
if ( $type_of_url != 'single' && $type_of_url != 'page' && $type_of_url != 'single_paged' )
$string = trailingslashit($string);
return $string;
}
add_filter('user_trailingslashit', 'nice_trailingslashit', 10, 2);
THE END
- 最新
- 最热
只看作者