我在我的插件裏做了一個簡短的代碼,這很好用。 短代碼需要一些參數並創建一個帶有輸出的自定義循環。wordpress query(shortcode)總是返回第一篇文章
其中一個參數是多少職位輸出迴路($標記)
$args=array(
'meta_key'=>'_mykey',
'post_status'=>'publish',
'post_type'=>'post',
'orderby'=>'date',
'order'=>'DESC',
'posts_per_page'=>$markers,
);
$wp_query = new WP_Query();
$wp_query->query($args);
if ($wp_query->have_posts()) : while (($wp_query->have_posts())) : $wp_query->the_post();
// do the loop using get_the_id() and $post->id
endwhile;endif;
wp_reset_query();//END query
在occations我需要從所有職位($markers = '-1')
,有時只有一個($markers = '1')
或muliple ($markers = 'x')
有數據。
所有這些工作在單頁/帖子很好 - 但我的問題是,當這個功能是在一個地方,我有不止一個職位(!is_single)和($ markers = '1'
)它總是會返回數據最新的帖子,而不是正確的.. (例如,在默認的wordpress主題,它會display10帖子 - 他們都將是相同的數據)
這顯然是$post->ID
的問題 - 而是如何可以在執行自定義循環時使用正確的帖子ID在wp循環外?
我試圖通過
global $post;
$thePostIDtmp = $post->ID; //get the ID before starting new query as temp id
$wp_query = new WP_Query();
$wp_query->query($args);
// Start Custom Loop
if (!is_single()){
$post_id_t = $thePostIDtmp;}
else {
$post_id_t = $post->ID;}
到ovverride問題,然後使用$post_id_t
- 但它沒有似乎工作, 我不該用get_the_id()?或者我應該不使用查詢(並使用get_posts)?
任何想法/解決方案/想法?
謝謝你的答案 - 我懷疑我將需要使用query_posts()或get_posts()它似乎沒有幫助我的情況下,我不知道爲什麼.. – 2012-04-22 10:35:36
你有沒有試過回顯出帖子ID所以你可以看到它的變化。如果你在if語句中回顯出來,並且設置了tmp變量,它可能會幫助你看到發生了什麼。 – matpol 2012-04-22 19:43:29