当前位置:
首页 > WordPress教程 > 去掉WordPress分类链接中的category教程

去掉WordPress分类链接中的category教程

教程介绍

category是WordPress分类中带的,为什么要去掉那?去掉这个后能利于SEO,不然的话你每个分类链接都会出现category,还能减小链接长度,看上去更简洁,之前本站分享过去掉category的插件,这次分享教程,代码篇.

代码预览

  1. <?php //代码分享来着源码集合(http://www.ymjihe.com)
  2. add_action( 'load-themes.php',  'no_category_base_refresh_rules');
  3. add_action('created_category', 'no_category_base_refresh_rules');
  4. add_action('edited_category', 'no_category_base_refresh_rules');
  5. add_action('delete_category', 'no_category_base_refresh_rules');
  6. function no_category_base_refresh_rules() {
  7. 	global $wp_rewrite;
  8. 	$wp_rewrite -> flush_rules();
  9. }
  10.  
  11. // register_deactivation_hook(__FILE__, 'no_category_base_deactivate');
  12. // function no_category_base_deactivate() {
  13. // 	remove_filter('category_rewrite_rules', 'no_category_base_rewrite_rules');
  14. // 	// We don't want to insert our custom rules again
  15. // 	no_category_base_refresh_rules();
  16. // }
  17.  
  18. // Remove category base
  19. add_action('init', 'no_category_base_permastruct');
  20. function no_category_base_permastruct() {
  21. 	global $wp_rewrite, $wp_version;
  22. 	if (version_compare($wp_version, '3.4', '<')) {
  23. 		$wp_rewrite -> extra_permastructs['category'][0] = '%category%';
  24. 	} else {
  25. 		$wp_rewrite -> extra_permastructs['category']['struct'] = '%category%';
  26. 	}
  27. }
  28.  
  29. add_filter('category_rewrite_rules', 'no_category_base_rewrite_rules');
  30. function no_category_base_rewrite_rules($category_rewrite) {
  31.  
  32. 	$category_rewrite = array();
  33. 	$categories = get_categories(array('hide_empty' => false));
  34. 	foreach ($categories as $category) {
  35. 		$category_nicename = $category -> slug;
  36. 		if ($category -> parent == $category -> cat_ID)
  37. 			$category -> parent = 0;
  38. 		elseif ($category -> parent != 0)
  39. 			$category_nicename = get_category_parents($category -> parent, false, '/', true) . $category_nicename;
  40. 		$category_rewrite['(' . $category_nicename . ')/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?category_name=$matches[1]&feed=$matches[2]';
  41. 		$category_rewrite['(' . $category_nicename . ')/page/?([0-9]{1,})/?$'] = 'index.php?category_name=$matches[1]&paged=$matches[2]';
  42. 		$category_rewrite['(' . $category_nicename . ')/?$'] = 'index.php?category_name=$matches[1]';
  43. 	}
  44. 	global $wp_rewrite;
  45. 	$old_category_base = get_option('category_base') ? get_option('category_base') : 'category';
  46. 	$old_category_base = trim($old_category_base, '/');
  47. 	$category_rewrite[$old_category_base . '/(.*)$'] = 'index.php?category_redirect=$matches[1]';
  48.  
  49. 	return $category_rewrite;
  50. }
  51. add_filter('query_vars', 'no_category_base_query_vars');
  52. function no_category_base_query_vars($public_query_vars) {
  53. 	$public_query_vars[] = 'category_redirect';
  54. 	return $public_query_vars;
  55. }
  56.  
  57. add_filter('request', 'no_category_base_request');
  58. function no_category_base_request($query_vars) {
  59. 	if (isset($query_vars['category_redirect'])) {
  60. 		$catlink = trailingslashit(get_option('home')) . user_trailingslashit($query_vars['category_redirect'], 'category');
  61. 		status_header(301);
  62. 		header("Location: $catlink");
  63. 		exit();
  64. 	}
  65. 	return $query_vars;
  66. }

使用说明

这段代码不能直接放到functions.php里面,建议各位在本地创建个PHP文件,名字随便你,然后在functions.php里面调用这个PHP文件
比如 创建一个 ymjihe.php然后把代码复制粘贴进去,注意保存的编码为UTF-8,然后上传到你的主题文件夹和functions.php同一级目录,(当然其他目录也可以)

然后在functions.php文件里面加上

  1. // 扩展功能
  2. include('ymjihe.php');

代码下载

云左科技

网友评论2

  1. 沙发
    Mouse
    Mouse:

    不能用了  分类打开空白 文章正常

    2017-01-31 15:21 [回复]
    • 源码集合
      源码集合:

      没问题的,不能直接放到functions.php,仔细看我教程

      2018-05-08 23:07 [回复]

发表评论

表情
还能输入210个字