如何显示WordPress中不存在的子页面的404页面?

时间:2019-08-07 06:46:51

标签: javascript php html css wordpress

我们的网站是使用WordPress构建的,我注意到我们的网站不会重定向不存在的子页面路由。

例如,我有一个名为about-us的页面,该页面的完整URL将是http://example.com/about-us,然后如果我转到about-us的不存在的子页面路由,即{{1 }}显示其父http://example.com/about-us/1/

的内容

/about-us应该重定向到WordPress的/about-us/1/页,因为它不存在。

我在 functions.php 中尝试了以下代码,但仅停止了自动猜测网址

404

任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:1)

当您在URL的末尾添加/(number)/时(例如在您的情况下,/1/),WordPress默认将其解析为页面参数。这对于存档页面很有用,但对单个帖子和页面则无用。

您可以通过将此代码添加到functions.php文件中来检查自己。

  function show_wp_query() {
    global $wp_query;

    echo "<pre>";
    die(var_dump($wp_query)); 
    echo "</pre>";
  }

  add_action('wp', 'show_wp_query');

  -------------------------
  Top section of the output
  -------------------------

  ["query"]=>
  array(2) {
    ["page"]=>
    string(1) "1"
    ["name"]=>
    string(8) "about-us"
  }

但是,当您尝试访问任意子页面时,您会看到WordPress实际上正在加载404页面。尝试使用此URL-http://example.com/about-us/sub-page


不太好的解决方案:但是,如果您绝对需要实现此行为,我可以向您推荐我所说的不太好的解决方案。

  function load_404_page_for_paged_urls() {
    global $wp_query;
    if( !is_single() && !is_page() ) return;

    $page = get_query_var( 'page' );

    if( $page  > 0 ) {
      $wp_query->set_404();
      status_header( 404 );
      get_template_part( 404 );
      exit(); 
    }

  }

  add_action('wp', 'load_404_page_for_paged_urls');

希望这对您有用。谢谢。