私はかなり基本的な問題を抱えていますが、WPにはネイティブソリューションがないことに驚いています(何かを見落としているのでない限り)。
static page
読書設定でフロントページを設定したWPサイトを持っています。プラグインコードで、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
にbody
もクラスを追加することwp-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... */
これは、何らかの理由でワードプレスがフロントページにクエリを実行し、wp-signup.php
次の質問を表示して提起することを示しています。
is_front_page()
間違った結果が返されるのはなぜですか?- 私の知る限りは、
wp-signup.php
WordPressのコードだけで確認することで救済されていない理由を、次に設定Wordpressの管理者を使用して、ホームページとして設定することはできませんPHP_SELF
かREQUEST_URI
? $this->post
この時点でWP_Queryに現在のホームページがあるのはなぜですか?
プラグイン(およびmu-plugins)ディレクトリを削除して、プラグインの問題を除外しました。それはまだwp-signup.php
他のどのページにもないフロントページとして認められます。
この問題に関するヘルプは大歓迎です。
アップデート
WP verison 4.2.4を使用していますが、これはマルチサイト設定です。
ありがとう。
if
状態を:( ! isset( $GLOBALS['pagenow'] ) || $GLOBALS['pagenow'] !== 'wp-signup.php' ) && ( is_front_page() || is_home() )