2009-10-08 44 views
43

Tôi gặp sự cố với chủ đề WordPress tùy chỉnh mà tôi đang phát triển. Đó là một chút phức tạp, nhưng về cơ bản, những gì tôi cần làm là có được một Post Id bởi nó là Tiêu đề bài viết. Trong mã giả, lý tưởng sẽ là một cái gì đó như:Nhận ID bài đăng WordPress từ Tiêu đề bài đăng

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

Tiêu đề được đề cập là tham chiếu tĩnh không được lấy từ WordPress, nó đã có trên trang.

Xin cảm ơn trước.

Trả lời

82

Chỉ cần ghi chú nhanh cho bất cứ ai tình cờ trên này:
get_page_by_title() bây giờ có thể xử lý bất kỳ loại đường bưu điện.
Thông số $post_type đã được thêm vào trong WP 3.0.

+17

+1 luôn luôn tốt hơn để sử dụng một chức năng cốt lõi hơn so với một số truy vấn mySQL tùy ý. Tuy nhiên, –

+2

Tên hàm là khó hiểu. – msiemens

18

Tìm thấy giải pháp nếu có ai khác đấu tranh với vấn đề này. Chỉ đăng câu hỏi ra khỏi tuyệt vọng sau 4 giờ thử nghiệm/Googling!

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

Tìm thấy tại: http://sudarmuthu.com/blog/2009/09/18/retrieving-posts-and-pages-based-on-title-in-wordpress.html

+0

Chỉ cần đặt hàm trong tập tin functions.php của bạn. – Littlejon

+2

Lưu ý rằng bạn có thể muốn thay đổi post_type thành 'trang' nếu bạn muốn lấy id cho một trang. Bạn cũng có thể bỏ qua post_type từ mệnh đề SQL where để tìm kiếm tất cả các sửa đổi, trang và bài đăng, v.v. (Tất cả các loại khác.) –

+2

Tôi nghi ngờ điều này có thể trả về phiên bản nháp/thùng rác vì nó không có tiêu chí 'status = 'published'' .... –

0

Một cách khác để có được những bài và trang ID, là sử dụng một plugin ..

có một plugin, rằng những gì nó chỉ đơn giản có, chỉ là thêm một cột để tất cả các trang của bạn, tất cả các bài viết, tất cả loại bảng biểu, và có một tiêu đề cột của ID ... và ngay phía dưới, bạn sẽ thấy tất cả các id trang/bài được liệt kê trong cột đó ..

tôi nghĩ rằng nên rất hữu ích ..

tôi sử dụng plugin này rất thường xuyên và nó rất nhẹ.

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

+0

Mã đăng sẽ hữu ích hơn nếu chúng tôi có ý tưởng về những gì bạn đang đề xuất ... – nickhar

0

Không cần phải sử dụng bất kỳ loại querys SQL hoặc plugin, sử dụng các chức năng tiêu chuẩn Wordpress cho điều này

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

bạn có thể sử dụng đoạn mã sau theo [a 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

nó rất dễ dàng để có được những bài id từ tiêu đề bài sử dụng truy vấn 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) khác nhau POST_TITLEPOST_NAME lẫn nhau. post_name có thể là slug. post_title là tiêu đề của bài viết.

2)

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

Làm cách nào để trả lời câu hỏi? –

7

Giống như Michal Mau nói:

Sử dụng

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

Đó là ($page_title, $output, $post_type) dễ dàng nhận được một bài thay vì một trang.

2

Có thể điều này sẽ giúp bạn hơn bằng cách tạo chức năng do đó bạn không cần phải lặp lại mã

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); 
Các vấn đề liên quan