Suchen der Kategorie-IDs auf Kategorieseiten

Ich verwende Kategorienschnittseiten, damit Benutzer Beiträge nach Kategorien filtern können.

ZB http://freemapsalgarve.com/category/destinations/alvor+bars-pubs/

Hier filtert der Benutzer die untergeordneten Kategorien “alvor” UND “bars-pubs” von “Zielen”.

Ich möchte die IDs der Kategorien erhalten, die auf der Seite gefiltert werden, damit ich sie dem Benutzer anzeigen kann, aber ich kann nur die erste Kategorie abrufen.

$this_cat = get_category(get_query_var('cat'));

… gibt in diesem Beispiel die erste Kategorie “alvor” zurück.

Weiß jemand, wie ich die beiden Kategorien finden könnte, die hier gefiltert werden?

Solutions Collecting From Web of "Suchen der Kategorie-IDs auf Kategorieseiten"

Wenn Sie in der Schleife sind, verwenden Sie einfach get_categories() .

Wenn Sie nicht in der Schleife sind und die abgefragten Terme WP_Query WP_Tax_Query , gibt es keine native API-function sowie keine WP_Query oder WP_Tax_Query Objektmethode (wie zum Beispiel get_queried_object() ). Sie müssen direkt darauf zugreifen.

Beispiel für das Aussehen der tax_query (vom OP bereitgestellt):

 ["tax_query"]=> object(WP_Tax_Query)#282 (2) { ["queries"]=> array(2) { [0]=> array(5) { ["taxonomy"]=> string(8) "category" ["terms"]=> array(1) { [0]=> string(5) "alvor" } ["include_children"]=> bool(true) ["field"]=> string(4) "slug" ["operator"]=> string(2) "IN" } [1]=> array(5) { ["taxonomy"]=> string(8) "category" 

Jetzt müssen wir auf dieses $wp_query Objekt $wp_query . Wir machen das mit einem kleinen Plugin, das die notwendigen Teile ausgibt.

 < ?php defined( 'ABSPATH' ) or exit; /* Plugin Name: (#90230) Get Taxonomy terms */ add_filter( 'parse_query', 'wpse90230_parse_query' ); function wpse90230_parse_query( $wp_query ) { // This is the tax_query/WP_Tax_Query object $tax_query = $wp_query->tax_query; // Now we get the relation `AND`/`OR` so we have a possibilty to the tell the user // whether we are showing them a "match" or a "filtered" result $relation = 'AND' === $tax_query->relation ? "filtered" : "matched"; // Then we're extracting the terms. // This gives us the terms as array sorted by taxonomy. foreach ( $tax_query->queries as $tax_query ) $terms[ $tax_query["taxonomy"] ] = $tax_query["terms"]; // Now we can loop through them: printf( 'You are viewing %s', get_post_type() ); foreach ( $terms as $taxonomy => $terms ) printf( '%s: %s' ,get_taxonomy( $taxonomy )->label ,join( ",", $terms ) ); }