Shortcode zum Zurückgeben eines einzelnen benutzerdefinierten Posts basierend auf der Post-Taxonomie

Zum Beispiel, wenn ich einen benutzerdefinierten Beitragstyp habe, der ” Fallstudien ” ist,

Zuerst muss ich in der Lage sein, die Post-Typen für eine einzelne spezifische Fallstudie abzufragen, aber dann sagen wir, es gibt einige Variationen dieser einzelnen Fallstudie;

“Wales”, “England”, “Schottland” …. Der richtige muss ausgewählt werden, abhängig von der Taxonomie der Kategorie für diesen Post (mit dem gleichen Namen).

Wenn die spezifische Fallstudie und ihre Variation gefunden wurde, sagen wir:

Fallstudie: Höchster Berg

Kategorie (Taxonomie) des benutzerdefinierten Beitrags: Schottland

Ich muss dann diese Informationen in eine HTML-Vorlage einfügen, zum Beispiel die Ausgabe wäre (Daten aus dem benutzerdefinierten Beitrag gezogen):

Highest Mountain

Here would be the content specific to Scotland...

Wenn also der Shortcode vom Benutzer in den content textarea eingegeben wird, müssen alle nur eingegeben werden

 [casestudy study_type="mountain"] 

Bei der Registrierung eines neuen Beitrags für ‘Fallstudien’ würde die Kategorietaxonomie (Variation) ausgewählt. Wenn also die für den Beitrag gewählte Kategorie “Schottland” war und der Nutzer dieses Land in seinem Nutzerprofil ausgewählt hatte, würde er die für Schottland spezifische Variante dieser Fallstudie (z. B. Berg) ziehen.

Alle helfen mir sehr, ich habe noch keinen benutzerdefinierten Shortcode geschrieben – also je mehr Erklärung, desto besser – danke!

Solutions Collecting From Web of "Shortcode zum Zurückgeben eines einzelnen benutzerdefinierten Posts basierend auf der Post-Taxonomie"

Von deinen gelieferten Informationen ist es mir nicht ganz klar. Aber soweit ich dein Problem verstanden habe, hier ist mein Ansatz.
Angenommen, wir haben den folgenden Kurzwahlcode, den der Benutzer in den Inhalt einer normalen Nachricht case_studies hat, und dass dieser Kurzwahlcode Informationen aus Ihrem benutzerdefinierten Post-Typ case_studies :

 [casestudy study_type="mountain"] 

Also zuerst, Ihr Shortcode-Handler:

 add_shortcode( 'casestudy', 'my_shortcode' ); function my_shortcode( $atts ) { $a = shortcode_atts( array( 'study_type' => 'mountain', ), $atts ); $content = my_template( $a ); return $content; } 

shortocode_atts() auf die function shortocode_atts() . Es soll die akzeptierten Parameter filtern, die die Abfrage Ihrer Vorlagenfunktion unten verarbeiten kann.

Dann, deine Vorlage:

 function my_template( $a ) { /** * I believe we should be in the loop already when this function is being called. * So to get the category slug of the current post in which the user has put the shortcode, you can try this. */ $category_terms = get_the_category(); $args = array( 'post_type' => 'case_studies', 'name' => $a['study_type'], 'category_name' => $category_terms[0]->slug, 'posts_per_page' => 1, ); $query = new WP_Query( $args ); ob_start(); if ( $query->have_posts() ) { while ( $query->have_posts() ) { the_post(); echo '

' . get_the_title() . '

'; echo '

' . get_the_content() . '

'; } reset_postdata(); } return ob_get_clean(); }

Dazu müssen Sie eigene Shortcodes erstellen. Verwenden Sie add_shortcode() , um eine function zu erstellen, mit der Sie alle benötigten add_shortcode() können. In Ihrem Thema functions.php

 add_shortcode('casestudy', 'myfunction'); function myfunction($atts){ $a = shortcode_atts( array( 'study_type' => 'mountain' ), $atts ); $content=''; // Get your data with get_post_meta return $content; }