Existe-t-il une fonction exactement opposée à celle-ci:
get_the_title(ID)
Je sais qu'il y a:
get_the_id()
Mais cela ne semble accepter aucun argument.
Donc, fondamentalement, je cherche quelque chose comme:
$title = 'Something';
get_the_id($title);
Je connais déjà cette solution:
global $wpdb;
$post_name = get_query_var('name');
$post_id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = $post_name");
Mais peut-être y a-t-il quelque chose qui me manque?
Je ne sais pas comment l'obtenir via le titre, mais vous pouvez l'obtenir via le slug (qui est souvent plus utile selon mon expérience) en utilisant ceci:
http://erikt.tumblr.com/post/278953342/get-a-wordpress-page-id-with-the-slug
Changez simplement "$ page" en "$ post" si vous voulez renvoyer des slugs pour des posts au lieu de pages.
Allez-y!
get_page_by_title( $title, [$output = 'object'], [$post_type = 'page'] )
existe à cet effet même. Je l'utilise maintenant dans l'un de mes projets pour afficher toutes les pièces jointes d'une page particulière dans ma barre latérale:
if ( $oPage = get_page_by_title('Proudly Supporting...') ) {
$children = get_posts(array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'numberposts' => 3,
'post_status' => null,
'post_parent' => $oPage->ID, /* Using the Page ID */
'orderby' => 'Rand',
));
if ( $children ) {
/* Do something with the children */
}
}
J'ai eu le même problème. J'ai utilisé le code suivant:
$my_title = 'My title';
global $wpdb;
$mypost = $wpdb->get_row( "SELECT * FROM wp_posts WHERE post_title = '" . $my_title . "' " );
echo $mypost->ID;
Il y a une fonction intégrée pour le faire. Utilisez: get_page_by_title ();
Voir la référence ici http://codex.wordpress.org/Function_Reference/get_page_by_title