• wordpress CMS主题:ssmay主题wordpress CMS主题:ssmay主题
  • 首页 > wordpress CMS主题制作 > wordpress主题如何去除分类目录URL中的category?

    wordpress主题如何去除分类目录URL中的category?

    作者: 分类:wordpress CMS主题制作 点击: 3,275 次
    wordpress CMS主题:ssmay主题

      在我们为wordpress同站伪静态并设置固定链接时,会发现,分类目录的URL地址中间会多出一个category,如:wanlimm.com/category/wordpress-theme ,为了利于SEO优化,我们一般都会希望地址URL越短越好,如:wanlimm.com/wordpress-theme,这时,就需要我们把中间的category去除。那么,如何去除掉这个category呢?

      方法一:直接在后台的固定链接里设置。

      后台——> 设置 ——> 固定链接 ——> 分类目录前缀 ,在“分类目录前缀”后面的表单中添加一个英文句号就可以了。这种方法有时能成功,但有时会在前台打开分类目录时会出现404错误。

      方法二:插件来实现。这方面的插件好像也不少。如:wp-no-category-base 。

      方法三:php代码实现。代码如下:

      //去除分类目录URL中的/category/
      add_action( 'load-themes.php', 'no_category_base_refresh_rules');
      add_action('created_category', 'no_category_base_refresh_rules');
      add_action('edited_category', 'no_category_base_refresh_rules');
      add_action('delete_category', 'no_category_base_refresh_rules');
      function no_category_base_refresh_rules() {
      global $wp_rewrite;
      $wp_rewrite -> flush_rules();
      }
      add_action('init', 'no_category_base_permastruct');
      function no_category_base_permastruct() {
      global $wp_rewrite, $wp_version;
      if (version_compare($wp_version, '3.4', '<')) {

      $wp_rewrite -> extra_permastructs['category'][0] = '%category%';
      } else {
      $wp_rewrite -> extra_permastructs['category']['struct'] = '%category%';
      }
      }
      add_filter('category_rewrite_rules', 'no_category_base_rewrite_rules');
      function no_category_base_rewrite_rules($category_rewrite) {
      $category_rewrite = array();
      $categories = get_categories(array('hide_empty' => false));
      foreach ($categories as $category) {
      $category_nicename = $category -> slug;
      if ($category -> parent == $category -> cat_ID)// recursive recursion
      $category -> parent = 0;
      elseif ($category -> parent != 0)
      $category_nicename = get_category_parents($category -> parent, false, '/', true) . $category_nicename;
      $category_rewrite['(' . $category_nicename . ')/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?category_name=$matches[1]&feed=$matches[2]';
      $category_rewrite['(' . $category_nicename . ')/page/?([0-9]{1,})/?$'] = 'index.php?category_name=$matches[1]&paged=$matches[2]';
      $category_rewrite['(' . $category_nicename . ')/?$'] = 'index.php?category_name=$matches[1]';
      }
      global $wp_rewrite;
      $old_category_base = get_option('category_base') ? get_option('category_base') : 'category';
      $old_category_base = trim($old_category_base, '/');
      $category_rewrite[$old_category_base . '/(.*)$'] = 'index.php?category_redirect=$matches[1]';

      return $category_rewrite;
      }
      // Add 'category_redirect' query variable
      add_filter('query_vars', 'no_category_base_query_vars');
      function no_category_base_query_vars($public_query_vars) {
      $public_query_vars[] = 'category_redirect';
      return $public_query_vars;
      }
      // Redirect if 'category_redirect' is set
      add_filter('request', 'no_category_base_request');
      function no_category_base_request($query_vars) {
      if (isset($query_vars['category_redirect'])) {
      $catlink = trailingslashit(get_option('home')) . user_trailingslashit($query_vars['category_redirect'], 'category');
      status_header(301);
      header("Location: $catlink");
      exit();
      }
      return $query_vars;
      }

      方法三是从插件中提取出来的代码,比较实用的。直接把代码放到wordpress主题的functions.php文件中,然后设置伪静态及固定链接,就可以了。



      QQ二维码

    文章作者:高时银博客
    本文地址:http://wanlimm.com/77201601124963.html
    版权所有 © 转载时必须以链接形式注明作者和原始出处!

    上一篇:
    下一篇:
    wordpress CMS主题:ssmay主题

    或许你会感兴趣的文章:

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    This site uses Akismet to reduce spam. Learn how your comment data is processed.