Wie filtert man Beiträge nach Format und Kategorie via URL?

Ich habe herausgefunden, dass ich Beiträge nach Format filtern kann, indem ich / type / {format} zB / type / gallery / in der URL tue.

Auf der Suche nach einer Möglichkeit, nach Kategorien darüber zu filtern, etwas wie / type / gallery / category / installation oder / type / gallery / art.

Ich habe die Abfrage herausgefunden, aber ich weiß nicht, wie ich mit dem URL-Bit umgehen soll:

$galleryquery = wp_parse_args($query_string); $galleryquery['tax_query'] = array( array( 'taxonomy' => 'post_format', 'terms' => array('post-format-gallery'), 'field' => 'slug', ), array( 'taxonomy' => 'category', 'terms' => array('installation'), 'field' => 'slug', ), ); query_posts($galleryquery); 

Ideen? Ich schätze, ich muss den Permalink abfangen und irgendwie an meine Anfrage weitergeben …

Die Website ist hier erreichbar

Solutions Collecting From Web of "Wie filtert man Beiträge nach Format und Kategorie via URL?"

Ich mache etwas ähnliches, aber für Mitgliedsseiten. Ich konnte den Code in meiner Antwort verwenden, die hier verlinkt ist und die Informationen in der URL analysiert, die in WordPress manipuliert werden können.

https://wordpress.stackexchange.com/a/91399/12920

Hier ist ein Ausschnitt des URL-Handling-Teils, mit dem Sie vielleicht beginnen können? Zugegeben, Sie tun etwas anderes als ich, aber die zugrunde liegende function sollte sehr ähnlich sein.

 // Catch the URL and redirect it to a template file function userpage_rewrite_catch() { global $wp_query; if ( array_key_exists( 'member', $wp_query->query_vars ) ) { // Do something if member is in the URL include (TEMPLATEPATH . '/user-profile.php'); exit; } } add_action( 'template_redirect', 'userpage_rewrite_catch' ); 

Ein möglicher Ansatz besteht darin, eine neue Rewrite-Regel für die benutzerdefinierte URL zu erstellen. Ich habe den Code nicht getestet, aber es geht ungefähr so:

 function add_category_query_var($query_vars) { array_push($query_vars, 'post_type'); array_push($query_vars, 'post_category'); return $query_vars; } add_filter('query_vars','add_category_query_var'); /* create new rewrite rule*/ function add_category_rewrite_rule($wp_rewrite_rules) { $new_rewrite_rule['type/([^/]+)/category/([^/]+)/?$'] = 'index.php?post_type=$matches[1]&post_category=$matches[2]'; $wp_rewrite_rules = $new_rewrite_rule + $wp_rewrite_rules; return $wp_rewrite_rules; } add_filter('rewrite_rules_array', 'add_category_rewrite_rule'); 

Dann würden Sie wie folgt auf die neue Variable zugreifen:

 $galleryquery['tax_query'] = array( array( 'taxonomy' => 'post_format', 'terms' => array('post-format-gallery'), 'field' => 'slug', ), array( 'taxonomy' => 'category', 'terms' => array($_GET['post_category']), 'field' => 'slug', ), ); 

Ich bin damit gelandet:

 function when_rewrite_rules( $wp_rewrite ) { $newrules = array(); $new_rules['type/([^/]+)/category/([^/]+)/?$'] = 'index.php?post_format=$matches[1]&category_name=$matches[2]'; $wp_rewrite->rules = $new_rules + $wp_rewrite->rules; } add_filter('generate_rewrite_rules','when_rewrite_rules'); 

Es müssen keine neuen Abfragevariablen hinzugefügt werden. Sie können beide Taxonomien out-of-the-box erhalten: Kategorien sind abfragefähig mit “? Category_name = x” und post-Formate mit “? Post_format = x”.

Verwirrenderweise sind Post-Formate eine Taxonomie und kein benutzerdefinierter Post-Typ, haben aber die Taxonomie von “type”. ZB filtern Sie sie wie folgt:

mysite.com/type/gallery

Es scheint, als wäre “/ format /” eine bessere Taxonomie, um Verwechslungen mit benutzerdefinierten Post-Typen zu vermeiden.