Sonderbares Problem mit pre_get_posts und $ query-> is_page ()

Das folgende Code-Bit wurde in meinem fiktiven Plugin verwendet, um die nicht eingeloggten Benutzer von Seite 173 (ID) zur sample-page (Slug) sample-page . Der Code funktioniert gut. Aber gerade heute habe ich herausgefunden, dass der Code Nachrichten in Firefox verursacht.

Das Problem trat auf, als ich versuchte, unter Einstellungen> Lesen eine statische Seite als Startseite festzulegen.

Hinweis: Versuch, die Eigenschaft non-object in /wp-includes/class-wp-query.php in Zeile 3760 zu erhalten

Hinweis: Versuch, die Eigenschaft von non-object in /wp-includes/class-wp-query.php in Zeile 3762 zu erhalten

Hinweis: Versuch, Eigenschaft von Nichtobjekt in /wp-includes/class-wp-query.php in Zeile 3764 zu erhalten

Bei mehreren Überprüfungen habe ich herausgefunden, dass das folgende Bit den Fehler verursacht. Und um genau zu sein, ist das Problem mit der is_page(173) .

 add_action('pre_get_posts', function($query) { if( $query->is_main_query() && ! is_admin() && ! is_user_logged_in() && $query->is_page(173) ) { wp_redirect(home_url('/sample-page')); exit(); } }); 

Ich habe versucht, von $query->is_page(173) zu is_page(173) zu is_page(173) – das Ergebnis ist das gleiche.

Um in einer leeren Installation zu testen, habe ich versucht, alle Plugins zu deaktivieren und das Standardthema TwentySixteen einzustellen und WordPress neu zu installieren, um eine neue Installation zu erhalten. Ich habe den folgenden Code in TwentySixteen’s functions.php , und mit DEBUG auf , hier ist, was ich habe . (Der Hinweis ist unter dem schwarzen Bereich der Kopfzeile, drücken Sie einfach Strg + A, um sie zu sehen) Sie können überprüfen, dass die Umleitung von dieser Seite ( 173 ) auf diese Seite ohne Hinweis funktioniert.

Was ist das Problem mit meinem Code?

Solutions Collecting From Web of "Sonderbares Problem mit pre_get_posts und $ query-> is_page ()"