WordPress 选择什么固定链接形式比较好?

编辑于:2023年05月07日

WordPress 选择什么固定链接形式比较好?

WordPress 的设置中有个固定链接选项,可以选择文章、页面、分类和标签等页面链接的形式。从实际出发与各位同学们聊聊,虫子菌为什么采用/p/%postname%.htmlcattag作为分类和标签的前缀的形式。

文章和页面的自定义结构

p是 post 的简写 ,通过 p 可以判断该链接是文章和页面,另一方还能生成静态页面时,p 作为目录可以更好的管理它们。

%postname%是文章的别名,我写了个函数按照年+0+文章ID 共7位纯数字的形式自动生成,长度统一,视觉美观。

.html是静态页面的后缀,CDN 服务一般默认会缓存 .html 后缀的链接。WordPress 是动态的,当生成为静态页面正好和 .html 相统一,不用额外设置规则。

分类和标签的自定义结构

cattag分别作为分类和标签的前缀,作用和文章页加 p 做前缀一致,既可以对链接类型做区分,也有助于生成静态页面时的管理。

这里需要注意,自定义结构加 .html 后,分类和标签链接的尾部就没有斜杠/了,没有斜杠 CDN 不会缓存,并且对生成静态页面不力,所以需要用代码 为分类和标签链接加上斜杠

以上固定链接的配套代码

//给标签和分类增加斜杠
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);

//固定连接结构为 %postname% 时,自动使用年+0+文章ID共7位数做别名
//教程:https://www.cccitu.com/2205266.html
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' );
	}
}

将以上代码复制到所用主题的 functions.php 底部保存生效。

总结

以上 WordPress 固定链接 的形式,主要考虑到 URL 视觉美观,CDN 和静态友好,目录形式方便管理。比较遗憾的是,玩机大学因历史遗留问题,文章页的没能加 p 或其它形式的目录前缀。

相关推荐

暂无评论