Kategorie aus Abfrage entfernen (zeige alle Beiträge in archive.php) pre_get_posts ()

Ich verwende pre_get_posts() , um zu ermöglichen, dass alle Beiträge in einem beliebigen Kategoriearchiv angezeigt werden. Dies liegt daran, dass ich eine Javascript Sortier- und Filtermethode unter Verwendung von isotope.js bereitstellen werde. Jede Kategorienseite gibt alle Beiträge aus, aber alle, die nicht zu dieser Kategorie gehören, werden zunächst ausgeblendet.

 function show_all_cats( $query ) { if ( !$query->is_main_query() ){ return; } if ( is_admin() ){ return; } if ( $query->is_archive ) { $query->set('cat', ''); //here is the problem var_dump($query); return; } return; } add_action( 'pre_get_posts', 'show_all_cats' ); 

Ich habe versucht, 'cat' auf 0 , null , '' und '-' . $currentcategoryid '-' . $currentcategoryid . Sie alle zeigen entweder nur Beiträge an, die sonst angezeigt würden (alle in der Kategorie) oder keine.

Ich habe versucht, mit query_posts() die auch nicht funktioniert. Mir wurde auch gesagt:

Manipulieren von Taxonomien erfordert möglicherweise eine erneute Verarbeitung von Meta-Abfragen.

Solutions Collecting From Web of "Kategorie aus Abfrage entfernen (zeige alle Beiträge in archive.php) pre_get_posts ()"

Es reicht wahrscheinlich nicht aus, die Cat-Variable zu deaktivieren. Der pre_get_posts Hook erfolgt, nachdem die pre_get_posts bereits analysiert wurden. Also gibt es wahrscheinlich eine Tax_Query mit der Taxonomie = Kategorie und die Begriffe = Ihre Kategorie.

Sie haben bereits die $ -Abfrage in Ihrem Code gespeichert, vermutlich zum Debuggen. Schau dir also an, was du tatsächlich ablädst. Siehst du die Steuerabfrage? Ändern Sie Ihren Code, um diese $ -Abfrage so anzupassen, dass sie das hat, was sie haben soll.

Hast du das versucht?

 unset( $query->query_vars['cat'] ); 

Sie können einen Filter pre_get_posts() , um den SQL-Abfrage-WHERE-Teil zu ändern:

 add_filter( 'posts_where', function ( $where ) { $where = preg_replace("regex pattern", "", $where); return $where; }, 10, 2 ); 

Es ist ein bisschen Hacking Lösung, sollte aber funktionieren.