Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何修复wordpress嵌套子类别归档页面的url问题_Php_Wordpress_Wordpress Theming - Fatal编程技术网

Php 如何修复wordpress嵌套子类别归档页面的url问题

Php 如何修复wordpress嵌套子类别归档页面的url问题,php,wordpress,wordpress-theming,Php,Wordpress,Wordpress Theming,我使用UnderStrap构建了一个自定义Wordpress主题。我的网站使用归档页面显示所有类别/子类别的内容。结构就像 父类别>子类别 我的归档页面URL结构是www.example.com/category/parent-category/subcategory。这是工作正常,但现在的问题是,它仍然是加载子类别的内容,如果我使用以下网址 www.example.com/category/subcategory www.example.com/category/any-string/subc

我使用UnderStrap构建了一个自定义Wordpress主题。我的网站使用归档页面显示所有类别/子类别的内容。结构就像

父类别>子类别

我的归档页面URL结构是www.example.com/category/parent-category/subcategory。这是工作正常,但现在的问题是,它仍然是加载子类别的内容,如果我使用以下网址

www.example.com/category/subcategory www.example.com/category/any-string/subcategory

有没有办法停止它并开始显示404错误


我尝试了一个“重定向规范”过滤器,但它没有任何帮助。

你必须做一些事情来实现你想要的

  • 添加自定义重写规则:首先,您必须添加自定义重写规则以检测子类别。默认情况下WordPress不会这样做
  • 添加404状态和模板加载代码:

  • 将这两个钩子添加到functions.php文件中,然后转到后端的设置页面并保存永久链接。应该行。

    谢谢你的回答。它部分地满足了我的需求,但现在它给我带来了另一个问题。现在,当我进入www.example.com/category/parent-category/subcategory时,它会给我父类别的id,而不是子类别的id。@AqeelAhmad对此表示抱歉。我没有完全检查代码。我已对代码进行了更改以解决该问题。你能检查一下它是否对你有效吗?谢谢,它有效。你知道我为什么会有这个问题吗?这是WordPress中的错误还是我做错了什么?你以前有没有遇到过这个问题?这不是WordPress的bug。这就是WordPress的工作原理。默认情况下,WordPress尝试加载页面,而不是尽可能多地显示404错误。无论如何,我将加载404页面的代码包装在“if(!is_admin())”中,它对我有效
      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'); 
    
    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');