[Résolu -> voir le dernier commentaire de cette question]
Dans le message personnalisé, tapez CPT_A. Je sauvegarde les prénoms et le nom de famille via un champ de formulaire de métabox personnalisé (ils ne sont pas des taxonomies):
update_post_meta( $post_id, 'first_name', esc_attr( $_POST['first_name'] ) )
update_post_meta( $post_id, 'last_name', esc_attr( $_POST['last_name'] ) )
Dans la base de données, cela ressemble à ceci:
post_id, meta_key, meta_value
186, first_name, John
186, last_name, Doe
323, first_name, Bill
323, last_name, Jones
Dans le message personnalisé, tapez CPT_B J'essaie de créer une liste déroulante qui est remplie par CPT_A => prénom et nom.
Comment puis-je parcourir le prénom et le nom de famille?
[Résolu] Avec le formulaire d’aide de Gareth Gillman, j’ai supprimé la boucle foreach, déplacé le <option>
dans la boucle while et changé get_the_id () en $ query1-> post-> ID.
Voici la solution de travail. S'il y a une manière plus éloquente s'il vous plaît commenter.
<select name="mailing_name" id="mailing_name">
<?php
$select_array = array();
$args = array (
'post_type' => 'fooBar',
);
$query1 = new WP_Query( $args );
while ( $query1->have_posts() ) {
$query1->the_post();
$first_name = get_post_meta( $query1->post->ID, 'first_name', true);
$last_name = get_post_meta( $query1->post->ID, 'last_name', true);
echo '<option value="">' . $first_name . ' ' . $last_name . '</option>';
}
wp_reset_postdata();
?>
</select>
Vous devez interroger la base de données à l'aide de wp_query pour obtenir toutes les publications du CPT, enregistrer le contenu de la métabox dans un tableau, puis imprimer le tableau.
Non testé mais devrait fonctionner (j'espère):
<?php
$select_array = array();
$args = array (
'post_type' => 'your_cpt',
);
$query1 = new WP_Query( $args );
while ( $query1->have_posts() ) {
$query1->the_post();
$select_array[firstname] = get_post_meta(get_the_id(), 'the_meta_key', true);
$select_array[lastname] = get_post_meta(get_the_id(), 'the_meta_key', true);
}
wp_reset_postdata();
?>
<select name="mailing_name" id="mailing_name">
<?php
foreach ($select_array as $option) {
echo '<option value="">'.$option[firstname].' '.$option[lastname].'</option>';
}
?>
</select>