問題描述

我正在開發一個自定義 WordPress 主題的問題。這有點複雜,但基本上,我需要做的是透過郵政標題獲得一個帖子標識。在 pseudo-code 中,理想情況是:

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

所提到的標題是一個靜態引用,不是從 WordPress 中提取出來的,它已經存在於頁面上。

提前致謝。

最佳解決方案

任何絆腳石的人都可以快速注意:get_page_by_title()現在可以處理任何帖子型別。 WP 3.0 中新增了 $post_type 引數。

次佳解決方案

找到一個解決方案,如果有任何人努力與此。只有在 4 小時測試/谷歌搜尋之後才發出絕望的問題!

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;
}

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

第三種解決方案

像 Michal Mau 所說:

使用

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

它是 ( $page_title, $output, $post_type )輕鬆地收到一個帖子而不是一個頁面。

第四種方案

這可能會透過建立函式來幫助您,以便您不必重複程式碼

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

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。