web-dev-qa-db-fra.com

Comment obtenir l'ID de la page si je ne connais que le titre?

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?

3
Wordpressor

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!

3
Michelle

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 */
  }

}
1
Sampson

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;
0
Webars

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

0
KeepMove