去掉 WordPress 分类链接中的父级目录

Plugins1 584阅读模式

默认WordPress分类固定链接以层级显示父子分类,例如:

https://zmingcx.com/category/wordpress/plugins/

如仅显示当前分类,去掉了父级分类目录,例如:

https://zmingcx.com/category/plugins/

可以尝试用下面的方法实现。

去掉 WordPress 分类链接中的父级目录

去掉 WordPress 分类链接中的父级目录

section

插件

可以安装:Single Category Permalink,安装启用插件后,WordPress会自动识别去掉父级分类目录并跳转到新链接。

section

代码版

如果不想使用插件,可以将下面代码添加到当前主题函数模板functions.php中:

add_filter( 'category_link', 'zm_category_link', 10, 2 );
function zm_category_link( $catlink, $category_id ) {
	global $wp_rewrite;
	$catlink = $wp_rewrite->get_category_permastruct();

	if ( empty( $catlink ) ) {
		$catlink = home_url('?cat=' . $category_id);
	} else {
		$category = &get_category( $category_id );
		$category_nicename = $category->slug;

		$catlink = str_replace( '%category%', $category_nicename, $catlink );
		$catlink = home_url( user_trailingslashit( $catlink, 'category' ) );
	}
	return $catlink;
}

可以实现相同的效果,添加代码后,记得保存一次固定链接设置才会生效。

section

另一段代码

add_action( 'init', 'zm_taxonomies', 0 );

function zm_taxonomies() {
	register_taxonomy( 'category', 'post', array(
		'hierarchical' => true,
		'update_count_callback' => '_update_post_term_count',
		'query_var' => 'category_name',
		'rewrite' => did_action( 'init' ) ? array(
			'hierarchical' => false,
			'slug' => get_option('category_base') ? get_option('category_base') : 'category',
			'with_front' => false) : false,
			'public' => true,
			'show_ui' => true,
			'_builtin' => true,
	) );
}

同样添加代码后,记得保存一次固定链接设置才会生效。

最后,建议使用插件。代码版改完链接结构,不能301跳转,也就是改完链接,有父目录的链接也可以同时访问,并不会自动跳转到修改后的链接。

貌似上述方法与去掉链接中的category有冲突,有待研究...

 

下载信息 资源名称:Single Category Permalink 资源名称:22.1 K
最近更新2023-8-3
下载地址

本站文章大部分始于原创,用于个人学习记录,可能对您有所帮助,仅供参考!

weinxin
我的微信
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
 
知更鸟
    • 欧乐安
      欧乐安 3

      平时很少这样显示,收藏备用

    匿名

    发表评论

    匿名网友
    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

    拖动滑块以完成验证