优化 WordPress 的固定链接形式之我见

使用 wordpress 建站的各位同学应该都知道,可以设置自己认为合适的固定链接

我原来想用自定义结构:/%post_id%.html 的方式,但发现这样的链接会比较难看,主要是因为 wordpress 的 id 并不连续,比如像我现在这个站,只是试着发了 2 篇文章,id 就已经到 45 了,对于我这种具有强迫症的患者来说,实在是非常无奈。那我们能不能用别名的方式并且用函数自动生成固定长度的别名呢?答案是肯定的。

图片[1] - 优化 WordPress 的固定链接形式之我见 - 搜集网
wordpress 固定链接

第一步:修改自定义结构为:/%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
喜欢就支持一下吧
点赞14 分享
评论 共2条

请登录后发表评论