2009-10-08 19 views
43

Tengo un problema con un tema de WordPress personalizado que estoy desarrollando. Es un poco intrincado, pero esencialmente, lo que tengo que hacer es obtener una Id. De publicación por su Título de publicación. En pseudo-código que lo ideal sería algo así como:Obtiene WordPress ID de la publicación del título de la publicación

title = "foo"; 
post_id = get_post_id_where_title_is(title); 

El título mencionado es una referencia estática no ser tirado desde WordPress, que ya está presente en la página.

Gracias de antemano.

Respuesta

82

Sólo una nota rápida para cualquier persona que se topa con esto:
get_page_by_title() ahora puede manejar cualquier tipo de correos.
El parámetro $post_type se ha agregado en WP 3.0.

+17

+1 siempre es mejor usar una función central que alguna consulta mySQL arbitraria. –

+2

El nombre de la función es confuso, sin embargo. – msiemens

18

Encontrado una solución si alguien más tiene problemas con esto. ¡Solo posteé la pregunta por desesperación después de 4 horas de prueba/búsqueda en Google!

function get_post_by_title($page_title, $output = OBJECT) { 
    global $wpdb; 
     $post = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type='post'", $page_title)); 
     if ($post) 
      return get_post($post, $output); 

    return null; 
} 

encontrar en: http://sudarmuthu.com/blog/2009/09/18/retrieving-posts-and-pages-based-on-title-in-wordpress.html

+0

Sólo hay que poner esa función en el archivo functions.php. – Littlejon

+2

Tenga en cuenta que es posible que desee cambiar post_type a 'página' si desea obtener el id de una página. También puede omitir post_type de la cláusula SQL where para buscar todas las revisiones, páginas y publicaciones, etc. (Todos los tipos, en otras palabras). –

+2

Sospecho que esto podría devolver las versiones borrador/papelera, ya que no tiene los criterios 'status = 'published'' .... –

0

Otra forma de obtener el ID del mensaje y de la página, es utilizar un plugin ..

hay un plugin, que lo que simplemente hace, se acaba de añadir una columna a todas las páginas, todos los mensajes, todos Categorías tablas, y tienen un título de columna de Identificación ... y justo a continuación, podrás ver todo el identificador de página/post que aparece en esa columna ..

creo que debe ser muy útil ..

I utiliza este plugin con mucha frecuencia y es muy liviano.

http://getyourblogready.com/?p=758

+0

El código de publicación sería más útil para que nos hagamos una idea de lo que está proponiendo ... – nickhar

0

No hay necesidad de utilizar cualquier tipo de consultas SQL o plug-in, utilice Wordpress funciones estándar para este

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

puede utilizar el siguiente código como por [un link] [http://codex.wordpress.org/Function_Reference/get_page_by_title] 1)!

<?php 
$page = get_page_by_title('About'); 
wp_list_pages('exclude=' . $page->ID); 
?> 
0

es fácil obtener el ID del mensaje de título de la entrada usando consulta wp:

global $wpdb; 

$rw = $wpdb->get_row($wpdb->prepare("select * from "your post table name" where post_title='your variable name or your post title'")); 

echo $rw->ID; 
0

1) difieren POST_TITLE y post_name unos de otros. post_name quizás sea la babosa. post_title es el título de la publicación.

2)

$titlee = "yourtitle"; 
echo $id = $wpdb->get_var("SELECT ID FROM $GLOBALS['wpdb']->posts WHERE post_name = $titlee"); 
+0

¿Cómo responde esto a la pregunta? –

7

Como Michal Mau mencionado:

Uso

$my_post = get_page_by_title('My Title', OBJECT, 'post'); 
echo $my_post->post_content; 

Es ($page_title, $output, $post_type) recibir fácilmente un puesto en lugar de una página.

2

de mayo Esto le ayudará más mediante la creación de la función de modo que usted no necesita repetir el código

function get_page_id_by_title($title) 
{ 
$page = get_page_by_title($title); 
return $page->ID; 
} 

$title = "your title"; 
get_page_id_by_title($title); 
Cuestiones relacionadas