加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > CMS系统 > wordpress > 正文

WordPress去掉分类链接中category目录的两种方法

发布时间:2020-12-14 14:34:14 所属栏目:wordpress 来源:网络整理
导读:我们的wp打开分类目录显示的链接默认是加上了/category/ 目录标志,非常的不美观,url非常的长,不利于url的SEO,网上多多方法,总结两种,一种是 WP No Category Base 插件,一种是手动。 方法一WP No Category Base 插件 WP No Category Base 插件功能简单

我们的wp打开分类目录显示的链接默认是加上了/category/ 目录标志,非常的不美观,url非常的长,不利于url的SEO,网上多多方法,总结两种,一种是 WP No Category Base 插件,一种是手动。

方法一WP No Category Base 插件

WP No Category Base 插件功能简单,就是仅仅为了去除 /category/ 目录标志,直接安装,不需要任何设置就可以使用。如果你的是新站,可以考虑去除/category/ 目录;如果你的是老站(也就是说搜索引擎已经收录了分类目录),使用这个插件后,注意做一下分类链接的301跳转。

方法二非插件

不用插件来实现WordPress去掉分类链接中category目录,只需要将下面代码添加到你当前主题的 functions.php 文件中即可:

点击预览图表参数代码

//去除分类标志代码

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();

}

//?register_deactivation_hook(__FILE__,?'no_category_base_deactivate');

//?function?no_category_base_deactivate()?{

//??remove_filter('category_rewrite_rules',?'no_category_base_rewrite_rules');

//??//?We?don't?want?to?insert?our?custom?rules?again

//??no_category_base_refresh_rules();

//?}

//?Remove?category?base

add_action('init',?'no_category_base_permastruct');

function?no_category_base_permastruct()?{

????global?$wp_rewrite,?$wp_version;

????if?(version_compare($wp_version,?'3.4',?'<'))?{

????????//?For?pre-3.4?support

????????$wp_rewrite?->?extra_permastructs['category'][0]?=?'%category%';

????}?else?{

????????$wp_rewrite?->?extra_permastructs['category']['struct']?=?'%category%';

????}

}

//?Add?our?custom?category?rewrite?rules

add_filter('category_rewrite_rules',?'no_category_base_rewrite_rules');

function?no_category_base_rewrite_rules($category_rewrite)?{

????//var_dump($category_rewrite);?//?For?Debugging

????$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]';

????}

????//?Redirect?support?from?Old?Category?Base

????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]';

????//var_dump($category_rewrite);?//?For?Debugging

????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)?{

????//print_r($query_vars);?//?For?Debugging

????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;

}

不管安装插件或者用代码可能会出现404页面,即%post_id%.html(本站设置的固定链接)的伪静态失效了!


解决方法:登录后台→设置→固定链接设置页面,随意改一下固定链接格式,然后再改回自己正常用的固定链接格式,可以解决这个bug,不行就反复多改几次。


PS:如果还会出现404,建议把所有缓存清除后再尝试!ok,一切正常了。

补充方法

修改网站的?.htaccess 文件

通过修改网站根目录下的?.htaccess 文件来实现,把以下代码添加到网站根目录下的 ?.htaccess文件中:

RewriteRule ^category/(.+)$ http://www.511yj.com/$1 [R=301,L]

其中的 www.511yj.com 为你的网站地址。

优点:仅加入一段代码,性能影响忽略不计。适用于对代码稍熟悉的网站管理员;升级WordPress程序没有影响。

缺点:修改代码,要在主机管理中处理。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读