it-swarm.com.de

Wie erhalte ich die ID der Seite, wenn ich nur den Titel kenne?

Gibt es eine genau entgegengesetzte Funktion zu dieser:

get_the_title(ID) 

Ich weiß, dass es gibt:

get_the_id()

Aber es scheint keine Argumente zu akzeptieren.

Also im Grunde suche ich nach etwas wie:

$title = 'Something';
get_the_id($title);

Ich kenne diese Lösung bereits:

 global $wpdb;
 $post_name = get_query_var('name');
 $post_id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = $post_name");

Aber vielleicht fehlt mir etwas?

3
Wordpressor

Ich bin nicht sicher, wie ich es über den Titel bekomme, aber Sie können es über den Slug bekommen (was meiner Erfahrung nach oft nützlicher ist), indem Sie dies verwenden:

http://erikt.tumblr.com/post/278953342/get-a-wordpress-page-id-with-the-slug

Ändern Sie einfach "$ page" in "$ post", wenn Sie Slugs für Posts anstelle von Seiten zurückgeben möchten.

Glück!

3
Michelle

get_page_by_title( $title, [$output = 'object'], [$post_type = 'page'] ) existiert für genau diesen Zweck. Ich verwende es jetzt in einem meiner Projekte, um alle Anhänge für eine bestimmte Seite in meiner Seitenleiste anzuzeigen:

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

Ich hatte das gleiche problem Ich habe den nächsten Code benutzt:

$my_title = 'My title';
global $wpdb;
$mypost = $wpdb->get_row( "SELECT * FROM wp_posts WHERE post_title = '" . $my_title . "' " );
echo $mypost->ID;
0
Webars

Es gibt eine eingebaute Funktion, um dies zu tun. Verwenden Sie: get_page_by_title ();

Siehe die Referenz hier http://codex.wordpress.org/Function_Reference/get_page_by_title

0
KeepMove