Erhalten Sie verwandte Sub-Cat-Posts für den benutzerdefinierten Post-Typ

Ich habe einen benutzerdefinierten Beitragstyp [Schulen] und eine benutzerdefinierte Steuer [Ort].

Jede Schule befindet sich in einer Standortkategorie.

Ich möchte Schulen in der Nähe in der Seitenleiste anzeigen. Bis jetzt habe ich herausgefunden, wie man 5 andere Schulen ausstellt, aber sie sind nicht immer in der Nähe, was nutzlos ist! Wie kann ich 5 Schulen aus dieser Kategorie auf meiner benutzerdefinierten Einzelseite anzeigen?

Im Folgenden werden 3 zufällige Beiträge angezeigt, jedoch nicht in derselben Kategorie. Ich hoffe, es kann leicht angepasst werden, um für mich zu arbeiten ?!

 3, 'order' => 'DESC', 'orderby' => 'ID', 'post_type' => $current_post_type, 'post__not_in' => array( $post->ID ) ); // Create the related query $rel_query = new WP_Query( $args ); // Check if there is any related posts if( $rel_query->have_posts() ) : ?> 

Related

Solutions Collecting From Web of "Erhalten Sie verwandte Sub-Cat-Posts für den benutzerdefinierten Post-Typ"

Sie können eine Steueranfrage verwenden ! Dieses Snippet verwendet auch wp_list_pluck , eine sehr praktische function zum “Zupfen” von Eigenschaften aus einem Array von Objekten (in diesem Fall, um ein Array von Term-IDs aus einem Array von Term-Objekten zu erhalten):

 // Get current posts location term(s) $locations = get_the_terms( null, 'location_taxonomy' ); if ( $locations && ! is_wp_error( $locations ) /* Can't be too careful */ ) { $schools = new WP_Query([ 'posts_per_page' => 5, 'no_found_rows' => true, 'post_type' => 'school_post_type', 'tax_query' => [ [ 'taxonomy' => 'location_taxonomy', 'terms' => wp_list_pluck( $locations, 'term_id' ), ] ] ]); } 

Update: Um mit Ihrem aktuellen Code zu integrieren:

 $current_post_type = get_post_type( $post ); $locations = get_the_terms( $post, 'location_taxonomy' ); // The query arguments $args = array( 'posts_per_page' => 3, 'order' => 'DESC', 'orderby' => 'ID', 'post_type' => $current_post_type, 'post__not_in' => array( $post->ID ), 'no_found_rows' => true, // Performance boost ); if ( $locations && ! is_wp_error( $locations ) ) { $args['tax_query'] = array( array( 'taxonomy' => current( $locations )->taxonomy, 'terms' => wp_list_pluck( $locations, 'term_id' ), ) ); } // Create the related query $rel_query = new WP_Query( $args );