Je voudrais utiliser les titres dans un élément de sélection sous une forme que je fais écho au côté client. Quelle serait la meilleure façon de faire cela?
Je voudrais utiliser les titres dans un élément de sélection sous une forme que je fais écho au côté client. Quelle serait la meilleure façon de faire cela?
Réponses:
Recherchez tous les titres de publication d'un type de publication spécifique
// Function that returns post titles from specific post type as form select element
// returns null if found no results.
function output_projects_list() {
global $wpdb;
$custom_post_type = 'page'; // define your custom post type slug here
// A sql query to return all post titles
$results = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_title FROM {$wpdb->posts} WHERE post_type = %s and post_status = 'publish'", $custom_post_type ), ARRAY_A );
// Return null if we found no results
if ( ! $results )
return;
// HTML for our select printing post titles as loop
$output = '<select name="project" id="project">';
foreach( $results as $index => $post ) {
$output .= '<option value="' . $post['ID'] . '">' . $post['post_title'] . '</option>';
}
$output .= '</select>'; // end of select element
// get the html
return $output;
}
// Then in your project just call the function
// Where you want the select form to appear
echo output_projects_list();
far better
il de l'autre réponse? C'est techniquement plus rapide car vous ne récupérez que les données dont vous avez besoin à partir de mysql. L'autre réponse (réponse plus simple) saisit toutes les données en mémoire puis les modifie ensuite en PHP. C'est plus de travail pour PHP. Les deux sont acceptables mais ont chacune leurs points forts. Si vous connaissez mysql, ce n'est pas du tout trop complexe. C'est assez simple.
Vous pourriez - et dans mon esprit, devriez - utiliser les fonctions API pour obtenir les données.
// query for your post type
$post_type_query = new WP_Query(
array (
'post_type' => 'your-post-type',
'posts_per_page' => -1
)
);
// we need the array of posts
$posts_array = $post_type_query->posts;
// create a list with needed information
// the key equals the ID, the value is the post_title
$post_title_array = wp_list_pluck( $posts_array, 'post_title', 'ID' );
wp_list_pluck()
. J'oublie toujours celui-là ...
Pour un type de publication hiérarchique , nous avons intégré:
wp_dropdown_pages(
[
'post_type' => 'page',
'echo' => 1,
'name' => 'wpse_titles',
'id' => 'wpse-titles'
]
);
qui générera un élément select avec les titres des articles et l' ID de l'article comme valeur d'option.
Exemple:
<select name='wpse_titles' id='wpse-titles'>
<option class="level-0" value="1">AAA</option>
<option class="level-0" value="2">BBB</option>
<option class="level-1" value="3"> CCC</option>
</select>
Ce n'est pas clair dans la documentation de wp_dropdown_pages()
, mais c'est un wrapper pour get_pages()
et supporte également ses arguments d'entrée.
La façon dont j'ai toujours fait des choses comme ça utilise get_posts
et foreach
aime quelque chose ci-dessous:
// Create our arguments for getting our post
$args = [
'post_type'=>'custom-slug'
];
// we get an array of posts objects
$posts = get_posts($args);
// start our string
$str = '<select>';
// then we create an option for each post
foreach($posts as $key=>$post){
$str .= '<option>'.$post->post_title.'</option>';
}
$str .= '</select>';
echo $str;