Pre bekommen Posts Paginierungsproblem

Ich verwende pre get_posts, um den auf einer Seite angezeigten Beitrag zu ändern. Dies geschieht über eine benutzerdefinierte Schleife mit Argumenten und foreach, so dass ich die folgende Prüfung für jeden Beitrag if($user_region === $product_region && !$variation['is_in_stock']) Sobald die Prüfung bestanden ist if($user_region === $product_region && !$variation['is_in_stock']) ich den Beitrag an ID zu einem Array und später post__not_in verwenden, um den Post zu verbergen.

Mein Problem ist $ wp_query hat keine Ahnung, dass ich post__not_in benutzt habe und die Ergebnisse nicht verrechnet werden

  $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $post__in = array(); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'paged' => $paged, 'tax_query' => array( array( 'taxonomy' => 'product_cat', 'field' => 'term_id', 'terms' => $current_category->term_id) )); foreach ($loop as $post) { if($user_region === $product_region && !$variation['is_in_stock']) { $post__in[] = $post->ID; } if($post__in != null) { $query->set('post__not_in', $post__in); } 

Was sollte passieren?

 POST-10 POST-11 POST-12 

Aber im Moment passiert das

 POST-7 POST-8 POST-9 POST-10 POST-11 POST-12 

Um zu bestätigen, dass $ wp_query die Ergebnisse nach dem Filtern nicht ausgleicht, werden auf Seite 1 von 2 drei Beiträge wie erwartet ausgeblendet.

Das obige ist wrap in einer function und add_action('pre_get_posts', array($this, 'remove_products')); ist anwesend

Jede Hilfe würde sehr geschätzt werden

Solutions Collecting From Web of "Pre bekommen Posts Paginierungsproblem"