2014-11-21 68 views
3

我試圖通過它的指導獲得帖子。通過guid獲取帖子

我想:

$post = get_post(array('guid' => 'foo')); 

但這只是返回第一篇文章。 (這是guid不是'foo')。

我錯過了什麼?

+0

任何具體原因*爲什麼*您需要這樣做。爲什麼不使用帖子ID – 2014-11-21 06:30:19

+0

好吧,顯然如果我知道ID我會使用它。 – pguardiario 2014-11-21 06:39:17

+0

請注意,但您如何獲得指導 – 2014-11-21 07:01:04

回答

11

你不可錯過的GUID get_post()

我建議你創建一個從GUID返回帖子ID的函數。

function getIDfromGUID($guid){ 
    global $wpdb; 
    return $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE guid=%s", $guid)); 

} 

var_dump(get_post(getIDfromGUID('http://localhost/wpdev/?p=10'))); 
+1

好的。我希望不必陷入sql,但如果沒有人提出其他的東西,我會接受。 – pguardiario 2014-11-21 06:40:59

0

如果您在無效參數/值內,get_post將返回第一個發佈數據。

get_post只接受$ post_id。 http://codex.wordpress.org/Function_Reference/get_post

$post = get_post(7); 
$title = $post->post_title; 

如果你想具體的過濾後,就可以使用get_postshttp://codex.wordpress.org/Template_Tags/get_posts

例子:

$args = array(
    'posts_per_page' => 1, 
    'category'   => 4, 
    'orderby'   => 'post_date', 
    'order'   => 'DESC', 
    'post_type'  => 'post', 
    'post_status'  => 'publish' 
); 

get_posts($args); 
+0

'get_posts'也不適用於我。我無法使用'get_post'或'get_posts'通過guid獲取帖子。 – pguardiario 2014-11-21 04:54:20

+0

guid是wordpress中的一個網址。如果你想塞檢索後,您可以使用get_posts()'的$ args =陣列( \t '名'=> '蛞蝓名', \t 'post_type'=> '後', \t「post_status '=>'發佈', \t'posts_per_page'=> 1 );' – Clement 2014-11-21 05:15:05

+0

不,我想通過guid來獲取它。我可以用原始的sql來完成,但我更喜歡使用wp函數。 – pguardiario 2014-11-21 05:38:40