2012-07-04 74 views
2

我有一個php函數,它生成一個逗號分隔的帖子ID列表,指定帖子在我的WordPress網站上顯示的順序。使用自定義SQL對WordPress網站上的帖子進行排序

我在尋找我可以插入像SQL查詢的地方:

SELECT * FROM wp_posts WHERE ID IN ('1', '2', '3') 

哪個PHP文件,我應該修改?我應該如何說SQL?

+1

你能更具體一點嗎?你想用哪個模板文件?它是一個靜態頁面還是分類頁面? –

回答

2

首先你應該使用wp_query這個。它旨在查詢帖子。

<?php 
$args = array(
    'post__in' => array (1,2,3) //the Ids 
); 
$query = new WP_Query($args); 
if ($query->have_posts()){ 
    while ($query->have_posts()) { 
     $query->the_post(); 
     echo get_the_ID().'<br/>'; 
    } 

} else { 
    echo 'no posts found'; 
} 

關於安置
我建議做一個custom template,請用一個簡單的代碼模板之上,建立一個網頁爲其分配一個模板,使頁面私有。

1
global $wpdb; $results = $wpdb->get_results("SELECT * FROM {$wpdb->posts} WHERE ID IN (1, 2, 3) ORDER BY ID"); 

你可以在你的主題的functions.php文件中使用它。

+0

我在主題的functions.php文件或additional_functions.php中看不到任何SQL,但是,我在wp-includes/functions.php文件中看到了一堆。我會將其修改爲哪個塊?最接近的候選人看起來像是在函數do_enclose()中。 – arby

+0

沒關係,老兄。只要你有一個連接,你可以在任何你想用PHP的地方使用SQL,因爲你有$ wpdb對象。 – matchdav

+0

你應該在functions.php中使用它,你完全不應該修改wp-includes文件夾。 – matchdav

3

將你的php函數粘貼到文件(root wordpress文件夾)/ wp-content/themes /(你的主題名稱)/functions.php SQL查詢應該是這樣的。

$sql=$wpdb->prepare("SELECT * FROM wp_posts WHERE ID IN ('1', '2', '3');"); 
$results=$wpdb->get_results($sql);   
echo ">>>>".$result[0]->something."<br />";//blah blah... 

哇,我沒有提到$ wpdp全球,還是代碼在我的系統上工作正常!,反正 我建議你在你的函數編寫「全球WPDB $」。

現在主要的問題是從哪裏調用這個函數; 你必須從主題/(你的主題)/index.php

嘗試確定如何在當前主題中生成帖子,並且你可能會得到你需要做的!

相關問題