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

默认 WordPress 分类固定链接以层级显示父子分类,例如: https://22vd.com/categ…

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

https://22vd.com/category/wordpress/plugins/

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

https://22vd.com/category/plugins/

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

section

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

section

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

  1.     add_filter( 'category_link', 'zm_category_link', 10, 2 );
  2.     function zm_category_link( $catlink, $category_id ) {
  3.     	global $wp_rewrite;
  4.     	$catlink = $wp_rewrite->get_category_permastruct();
  5. 
    
  6.     	if ( empty( $catlink ) ) {
  7.     		$catlink = home_url('?cat=' . $category_id);
  8.     	} else {
  9.     		$category = &get_category( $category_id );
  10.     		$category_nicename = $category->slug;
  11. 
    
  12.     		$catlink = str_replace( '%category%', $category_nicename, $catlink );
  13.     		$catlink = home_url( user_trailingslashit( $catlink, 'category' ) );
  14.     	}
  15.     	return $catlink;
  16.     }

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

  1.     add_action( 'init', 'zm_taxonomies', 0 );
  2. 
    
  3.     function zm_taxonomies() {
  4.     	register_taxonomy( 'category', 'post', array(
  5.     		'hierarchical' => true,
  6.     		'update_count_callback' => '_update_post_term_count',
  7.     		'query_var' => 'category_name',
  8.     		'rewrite' => did_action( 'init' ) ? array(
  9.     			'hierarchical' => false,
  10.     			'slug' => get_option('category_base') ? get_option('category_base') : 'category',
  11.     			'with_front' => false) : false,
  12.     			'public' => true,
  13.     			'show_ui' => true,
  14.     			'_builtin' => true,
  15.     	) );
  16.     }

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

最后,建议使用插件。代码版改完链接结构,不能 301 跳转,也就是改完链接,有父目录的链接也可以同时访问,并不会自动跳转到修改后的链接。貌似上述方法与去掉链接中的 category 有冲突,有待研究…

类别:WordPress教程

本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

评论 (0)COMMENT

登录 账号发表你的看法,还没有账号?立即免费 注册