2010-08-28 26 views
12

Wordpress 3.0¿Cómo puedo obtener una publicación por título en Wordpress?

Quiero tener el contenido de un puesto específico en una página utilizando el title del puesto. Por lo que puedo decir, no puedo hacerlo directamente con get_post().

Puedo suponer lo que podría ser la fuerza bruta, pero sospecho que hay una manera más elegante?

+1

si ninguno de los answere has llegado hasta aquí forma la factura, es posible encontrar http://wordpress.stackexchange.com/ merece la pena ir =) – Rob

Respuesta

5
<!--1.Get post ID by post title if you know the title or the title variable--> 
<?php 
$posttitle = 'post_title'; 
$postid = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_title = '" . $posttitle . "'"); 
echo $postid; 
?> 

<!--2.use get_post($post_id) to get whatever you want to echo--> 
<?php 
$getpost= get_post($postid); 
$postcontent= $getpost->post_content; 
echo $postcontent; 
?> 
+10

Muy mala práctica utilizar una variable sin escape en el SQL como esa . Si estos datos provienen del usuario, entonces es peligroso porque permite un ataque de inyección SQL. En su lugar, use $ wpdb-> prepare, de la siguiente manera: $ postid = $ wpdb-> get_var ($ wpdb-> prepare ("SELECCIONE ID FROM {$ wpdb-> posts} WHERE post_title =% s", $ posttitle)); –

1

Ver my answer en una pregunta muy similar. Haga no consulte la base de datos con una cadena sin guardar.

34
get_page_by_title($id, OBJECT, 'post'); 

Ahí tienes.

+4

http://codex.wordpress.org/Function_Reference/get_page_by_title – Jake

+0

Para referencia futura, el segundo argumento 'get_page_by_title()' espera una cadena. Sin embargo, WP define algunas variables de nivel superior como OBJECT ('OBJECT'), ARRAY_N ('ARRAY_N'), y así sucesivamente. – Chris

4

No es necesario realizar consultas SQL cuando puede usar las funciones propias de wordpress para esto.

$page = get_page_by_title('Startsida'); 
$page_id = $page->ID; 
1

Puede utilizar esta:

1)

global $wpdb; 
$your_title = "yourtitle"; 
$id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = $your_title"); 
echo $id; 

o 2)

$slug_to_get = 'my_title_or_slug'; 
    // you can use custom post type too 
    $posttypee='post'; 

    $args=array(
     'title' => $slug_to_get, 
     'post_type' => $posttypee, 
     'post_status' => 'publish' 
    ); 
    $my_posts = get_posts($args); 
    if($my_posts) { 
    echo 'ID on the first post found '.$my_posts[0]->ID; 
    } 
+1

por razones de seguridad siempre debe usar funciones wp cuando sea posible. @ver respuesta: http://stackoverflow.com/a/12518634/288644 –

Cuestiones relacionadas