Metabox mit einem benutzerdefinierten Post-Typ gefüllt – Wie wird CPT basierend auf Select ausgegeben?

Ich habe eine Dropdown-Metabox mit einem benutzerdefinierten Post-Typ gefüllt, jetzt in meiner Vorlage, kann ich den Wert der Metabox-Ausgabe erhalten, aber was ich wirklich brauche, ist alle Informationen aus diesem ausgewählten CPT in bestimmten Bereichen des Beitrags angezeigt werden.

Meine Metabox

$meta_boxes[] = array( 'id' => 'actordetails', 'title' => 'Select an Actor', 'pages' => array( 'films' ), 'context' => 'normal', 'priority' => 'high', // List of meta fields 'fields' => array( array( 'name' => '', 'id' => $prefix . 'getactors', 'type' => 'select', 'clone' => false, 'options' => get_actors_options(), ), ) ); 

Meine function

 function get_actors_options( $query_args ) { $args = wp_parse_args( $query_args, array( 'post_type' => 'actors', ) ); $posts = get_posts( $args ); $post_options = array(); if ( $posts ) { foreach ( $posts as $post ) { $post_options [ $post->post_title ] = $post->post_title; } } return $post_options; } 

Das ist, was ich bekomme:

  ID, 'nt_getactors', true); ?> 

Bildbeschreibung hier eingeben

Das ist das, was ich benötige:

Bildbeschreibung hier eingeben

Welchen Code würde ich verwenden, um den Rest des benutzerdefinierten Post-Typs zu erhalten, den ich ausgewählt habe?

Solutions Collecting From Web of "Metabox mit einem benutzerdefinierten Post-Typ gefüllt – Wie wird CPT basierend auf Select ausgegeben?"

Wenn Sie den Wert der Metabox auf die cpt post-ID des Autors setzen, sollten Sie den Post mit erhalten können

 //get the id for the actors cpt $actors_id = get_post_meta( $post->ID, 'nt_getactors', true ); //get the post obejct for the author $actors_post = get_post( $actors_id, OBJECT ); //or ARRAY_A if you want an array and not an object //to output eg the title use $actors_post->post_title; 

Weitere Optionen finden Sie unter get_post .

Aktualisieren

Veränderung

 $post_options [ $post->post_title ] = $post->post_title; 

zu

 $post_options [ $post->ID ] = $post->post_title; 

Update 2

Verwenden Sie $actors_post Post-Objekt $actors_post genau wie ein normales Post-Objekt. Überprüfen Sie den Codex für eine nette Referenz der verfügbaren Elementvariablen.

z.B

 $actors_post->post_content; 

Denken Sie daran, dass $ actors_post-Daten “rohe” Daten sind und Sie möglicherweise einige Filter anwenden möchten, je nachdem, wie Sie sie verwenden. z.B

 apply_filters( 'the_content', $actors_post->post_content ); 

Update 3

Um Meta-Werte vom Actor-Post zu erhalten, tun Sie dies entweder für einen einzelnen Wert

 get_post_meta( $actor_post->ID, 'ecpt_bio', true ); 

oder (wenn Sie mehrere Werte haben, können Sie sie alle in einem Array erhalten):

 $actor_meta = get_post_meta( $actor_post->ID ); //and then access the array element echo $actor_meta['ecpt_bio']; 

Einpacken

Ändern Sie Ihre Callback-function, um anstelle des Titels auf die ID des Posts zu verweisen (siehe Update # 1)

 //get the id for the actors cpt $actors_id = get_post_meta( $post->ID, 'nt_getactors', true ); //get the post obejct for the author $actors_post = get_post( $actors_id, OBJECT ); //to output eg the title use echo apply_filters( 'the_title', $actors_post->post_title ); //output the content echo apply_filters( 'the_content', $actors_post->post_content ); //get the meta values from the actor post $actor_meta = get_post_meta( $actor_post->ID ); //and output it like this echo $actor_meta[ 'ecpt_bio' ];