post_results Filter durch Paginierung in Seitenleiste und Hauptabschnitt verwirrt

Ich habe einen post_results-Filter, den ich verwenden möchte, um die von einer Abfrage zurückgegebenen Ergebnisse zu bearbeiten. Sagen wir, dass es Sterne um den ersten Post auf der ersten Seite, den zweiten Post auf der zweiten Seite und so weiter legen soll.

Wenn ich sehe, wie es im Hauptinhaltsbereich funktioniert, sieht alles gut aus, aber wenn es durch das Widget “Letzte Posts” in der Seitenleiste ausgetriggers wird, ist das Verhalten der Seitenzahl, auf der sich der Hauptinhalt befindet, nicht die erste Seite der Seitenleiste zeigt. Wenn sich der Hauptinhalt beispielsweise auf Seite 3 befindet, enthält der dritte Post auf der Seite Sterne. Der dritte Post im Widget “Verwandte Posts” enthält jedoch auch Sterne, obwohl er tatsächlich die erste Seite der Ergebnisse anzeigt.

Mein Filter ist mit gegated

if (is_home() && is_main_query()) 

. Ich kann in_the_loop () nicht verwenden, da der Filter ausgetriggers wird, bevor the_post () aufgerufen wird, und daher wurde The Loop noch nicht eingegeben.

Echoing get_query_var (‘paged’) und $ wp_query-> query_vars [‘paged’] zeigen die Seitennummer des Hauptinhalts, aber wenn ich in die Standard-Widgets.php von WP gehe, sehe ich, dass sie tatsächlich eine Seitenabfrage verwendet

 $r = new WP_Query( apply_filters( 'widget_posts_args', array( 'posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true ) ) ); 

und echoring $ r-> query_vars [‘paged’] zeigt die korrekte Seitenzahl an, obwohl mein post_filter bereits darauf gefeuert hat. Echoing, wenn Related Posts den Link druckt, zeigt, dass is_main_query () true zurückgibt, in_the_loop () nicht wie im Hauptinhaltsblock.

Ich bin wirklich verwirrt darüber, wie ich zwischen diesen beiden Fällen unterscheiden soll.

Solutions Collecting From Web of "post_results Filter durch Paginierung in Seitenleiste und Hauptabschnitt verwirrt"