2009-10-08 21 views
43

Ho un problema con un tema WordPress personalizzato che sto sviluppando. È un po 'complicato, ma in sostanza, quello che devo fare è ottenere un post ID dal titolo del post. In pseudo-codice sarebbe idealmente essere qualcosa di simile:Ottieni WordPress Post ID dal titolo post

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

Il titolo menzionato è un riferimento statico non essere tirato in da WordPress, è già presente nella pagina.

Grazie in anticipo.

risposta

82

Solo una breve nota per chi si imbatte in questo:
get_page_by_title() possono ora gestire qualsiasi tipo di posta.
Il parametro $post_type è stato aggiunto in WP 3.0.

+17

+1 sempre meglio usare una funzione di base rispetto ad una query mySQL arbitraria. –

+2

Tuttavia, il nome della funzione è confuso. – msiemens

18

Trovato una soluzione se qualcun altro ha difficoltà con questo. Ho postato la domanda solo per disperazione dopo 4 ore di test/su 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; 
} 

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

+0

Basta mettere quella funzione nel file functions.php. – Littlejon

+2

Nota che potresti voler cambiare post_type in "pagina" se vuoi ottenere l'id per una pagina. Puoi anche omettere il post_type dalla clausola SQL where per cercare tutte le revisioni, pagine e post, ecc. (Tutti i tipi in altre parole.) –

+2

Sospetto che questo potrebbe restituire le versioni draft/trashed, poiché non ha i criteri 'status = 'pubblicato'' .... –

0

Un altro modo per ottenere il posto e la pagina ID, è quello di utilizzare un plugin ..

c'è un plugin, che cosa fa semplicemente, è sufficiente aggiungere una colonna per le vostre tutte le pagine, tutti i messaggi, tutte le categorie tavoli, e hanno un titolo di una colonna di ID ... e proprio sotto, vedrete tutte le id pagina/post elencati nella colonna ..

Penso che dovrebbe essere molto utile ..

I usa questo plugin molto frequentemente ed è molto leggero.

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

+0

Registrare il codice sarebbe più utile per farci un'idea di cosa stai proponendo ... – nickhar

0

Non c'è bisogno di utilizzare qualsiasi tipo di querys SQL o plug-in, utilizzare le funzioni standard di Wordpress per questo

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

è possibile utilizzare il seguente codice di cui al [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

è facile da ottenere l'id dal titolo del post utilizzando Query 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) differiscono post_title e POST_NAME gli uni dagli altri. post_name forse è lo slug. post_title è il titolo del post.

2)

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

Come risponde la domanda? –

7

Come Michal Mau menzionati:

Usa

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

E '($page_title, $output, $post_type) ricevere facilmente un posto invece di una pagina.

2

maggio questo vi aiuterà più con la creazione di funzione, in modo che non c'è bisogno di ripetere il codice

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); 
Problemi correlati