WordPress优化之去掉分类链接中的category

本文共4619个字,预计阅读时间需要12分钟 发布时间: 2021-12-19 共66人阅读

在网站SEO优化中url优化是相对来说比较重要的环节,wordpress分类的链接地址在wordpress程序中会自带category目录,例如:https://www.zhankr.net/category/learn。

如果能够去掉分类链接中的category无疑也是网站seo优化的一种手法。

下面分享一段去掉分类链接中的category的wordpress代码

使用方法

复制下面代码粘贴到functions.php文件里即可

//去掉分类链接中的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();
}
// 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;
}

代码很长,也不用看懂,直接将上面代码添加到主题functions.php文件就行

本站声明:
1. 本站所有资源来源于网络,分享目的仅供大家学习和交流! 2. 不得使用于非法商业用途,不得违反国家法律。否则后果自负! 3. 本站提供的资源,都不包含技术服务请大家谅解! 4. 如有链接无法下载、失效或广告,请联系站长处理!

再次声明:如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。


HI模板网 » WordPress优化之去掉分类链接中的category

常见问题FAQ

本站下载资源解压密码是什么?
本站所有资源解压密码均为www.hmoban.com、www.huziy.com或者www.92luntan.com
免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
开通VIP 享更多特权,为了您的账户安全HI模板网建议您使用QQ登录!