Filtern Sie das WordPress-Archiv-Widget, um Beiträge mit einer bestimmten benutzerdefinierten Taxonomie-Begriffs-ID auszuschließen

Ich arbeite mit einer anderen Code-Variante, die bereits hier gepostet wurde. Sie sollte das Standard-WordPress-Archiv-Widget filtern, um nur die Monatsergebnisse für eine bestimmte Kategorie anzuzeigen.

Ich versuche, es zu ändern, um stattdessen die mit einer bestimmten benutzerdefinierten Taxonomie zugewiesenen Posts auszuschließen.

Diese benutzerdefinierte Taxonomiebegriffs-ID ist 139, die zu Testzwecken einem Eintrag im März 2016 beigefügt ist (der auch der einzige Beitrag im März 2016 ist). Also habe ich es wie folgt bearbeitet.

Wenn ich tt.term_id = ‘139’ einstelle, zeigt das Archiv-Widget nur ‘März 2016’ an, was korrekt wäre. Aber wenn ich es NICHT GLEICH wie unten gezeigt mache, zeigt es alle Monate einschließlich “März 2016” an, was die Ausnahme sein sollte.

Ich vermute, das Problem ist irgendwie mit dem Join-Filter, aber nicht sicher, wie man es anpasst. Danke für Hinweise.

add_filter( 'getarchives_join' , 'getarchives_join_filter'); function getarchives_join_filter( $join ) { global $wpdb; return $join . " INNER JOIN {$wpdb->term_relationships} tr ON ($wpdb->posts.ID = tr.object_id) INNER JOIN {$wpdb->term_taxonomy} tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id)"; } add_filter( 'getarchives_where' , 'getarchives_where_filter'); function getarchives_where_filter( $where ) { global $wpdb; return $where . " AND tt.term_id != '139' "; } 

Solutions Collecting From Web of "Filtern Sie das WordPress-Archiv-Widget, um Beiträge mit einer bestimmten benutzerdefinierten Taxonomie-Begriffs-ID auszuschließen"

Dies wäre wahrscheinlich am besten mit einer benutzerdefinierten WP_Query im Gegensatz zu einem Filter getan.

Nehmen wir an, Ihre Website befasst sich mit Pflanzen. Sie möchten jedoch nicht, dass in diesem benutzerdefinierten Archiv Posts angezeigt werden, in denen Ihre benutzerdefinierte Taxonomie auf weeds :

 $args = array( 'post_type' => 'post', 'tax_query' => array( 'taxonomy' => 'plants', 'field' => 'slug', 'terms' => 'weeds', 'operator' => 'NOT_IN', ), ); $myArchive = new WP_Query($args); 

Also, was dieser Code macht, erstellt eine neue Abfrage für Beiträge, die den Slug für die Taxonomie von plants und dann alle außer denen mit einem Slugnamen von weeds und dann können Sie die Schleife verwenden, um sie anzuzeigen, wie Sie wollen Widget.

wp_reset_postdata() daran, wp_reset_postdata() nachdem der letzte Post in Ihrem Widget angezeigt wurde, um $post auf die Standardabfrage zurückzusetzen.