is_front_page()故障?
我有一个非常基本的问题,我很惊讶WP没有针对它的本机解决方案(除非希望能够忽略某些事情)。 我有一个WP网站,static page在阅读设置中设置为首页。在一个插件代码中,我试图确定WP是否正在显示首页,并为$classes数组添加一个类(如果是)。我正在使用以下代码来完成它 add_filter('body_class', function($classes){ if(is_front_page() || is_home()){ $classes[] = 'home-page'; } return $classes; }); 我同时使用这两种方法is_front_page(),is_home()以防将来首页设置从静态页面更改为博客布局。 我遇到的问题是这段代码甚至在页面上都添加了home-page类。 bodywp-signup.php 检查代码可以发现该is_front_page()调用WP_Query::is_front_page()实际上是返回的结果WP_Query::is_page(get_option('page_on_front'))。因此,问题的根源在于它wp-signup.php等于返回的页面(id)get_option('page_on_front')(该ID静态页面的返回值是在设置>阅读中设置为首页)。 WP_Query::is_page()在WP_Query::get_queried_object()内部用于确定当前页面是否为方法参数中存在的页面。在wp-signup.php情况下,将当前的查询对象的代码是如下 /*...other code... */ elseif ( $this->is_singular && ! empty( $this->post ) ) { $this->queried_object = $this->post; $this->queried_object_id = (int) $this->post->ID; } /*...other code... */ 这表明由于某些原因,wordpress查询首页以显示wp-signup.php并提出以下问题。 为什么is_front_page()返回错误结果? wp-signup.php永远无法使用Wordpress管理员设置将AFAIK 设置为主页,那么为什么不仅仅通过选中PHP_SELF或来保存wordpress代码REQUEST_URI? 为什么此时WP_Query具有当前主页$this->post? 我已经通过删除plugins(和mu-plugins)目录排除了插件问题。它仍然可以wp-signup.php作为首页,而没有其他页面。 …