我使用UnderStrap构建了一个自定义的Wordpress主题。我的网站使用存档页面来显示所有类别/子类别的内容。结构就像
【如何解决WordPress的嵌套子类别存档页面的URL问题】父类别>
子类别
我用于存档页面的URL结构是www.example.com/category/parent-category/subcategory。这工作正常, 但是现在的问题是, 如果我使用以下URL, 它仍在加载子类别内容
www.example.com/category/subcategory www.example.com/category/any-string/subcategory
有什么办法可以停止它并开始显示404错误?
我已经尝试过”
redirect_canonical”
过滤器, 但是它根本没有帮助。
#1你必须做几件事才能实现你想要的。
- 添加自定义重写规则:首先, 你必须添加自定义重写规则以检测子类别。 WordPress默认情况下不会那样做。
function theme_custom_rewrites() {
add_rewrite_tag("%parent_category_name%", "([a-z0-9\-_]+)");
add_rewrite_rule('^category/([a-z0-9\-_]+)/([a-z0-9\-_]+)/?', 'index.php?parent_category_name=$matches[1]&
category_name=$matches[2]', 'top');
add_rewrite_rule('^category/([a-z0-9\-_]+)/?', 'index.php?category_name=$matches[1]', 'top');
}add_action('init', 'theme_custom_rewrites');
- 添加404状态和模板加载代码:
function load_404_page_for_subcategory_pages() {
global $wp_query;
$category_slug = get_query_var('category_name');
$parent_category_slug = get_query_var('parent_category_name');
$parent_category = get_category_by_slug($parent_category_slug);
$category = get_category_by_slug($category_slug);
if( !$parent_category &
&
$category->
parent != 0) {
$wp_query->
set_404();
status_header( 404 );
get_template_part( 404 );
exit();
}
}add_action('wp', 'load_404_page_for_subcategory_pages');
将两个钩子都添加到functions.php文件中, 然后转到后端的设置页面并保存永久链接。它应该工作。
推荐阅读
- 如何修复断页的WordPress模板错误
- 如何修复我在php 7更新wordpress时出现的问题
- 如何修复页面响应()
- 如何修正WordPress主题中index.php默认的id=error-page
- LFS 系列从零开始 DIY Linux 系统(构建临时系统 - Binutils-2.25)
- 8.常见的权限表示形式
- 操作系统_第三章处理器管理_进程的调度算法
- 操作系统_进程同步与进程通信_多线程技术的优势
- 树莓派Pi4b 8G版本安装centos7