2010-06-29 40 views
0

我有一個客戶端在IIS(php5,fast cgi)上安裝了WordPress,並且我的菜單沒有顯示出問題。具有諷刺意味的是,如果他回到我以前的主題版本,菜單顯示正常。由於我改變了兩個版本之間的查詢,所以我想知道是否有人能夠在後者中發現問題。IIS上的WordPress,WP_Query問題()

以前版本的查詢似乎很好地工作:

global $post; 
    $cat=get_cat_ID('top-menu'); 
    $catHidden=get_cat_ID('hidden'); 
    $count=0; 
    $mypostsheader = get_posts(array('cat' => "$cat,-$catHidden",'showposts' => $cb2_current_count)); 
    $mypostsheader2 = get_posts(array('cat' => "$cat,-$catHidden",'showposts' => -1)); 
    $mypostsheadercount = count($mypostsheader2); 

    if($mypostsheader) 
    { 
    $current_page = get_post($current_page); 
    ?> 

然而,目前的版本採用了略有不同的代碼邏輯來建立菜單。這不相同的設置下工作(但它只是對Apache的罰款)

$cat=get_cat_ID('top-menu'); 
$catHidden=get_cat_ID('hidden'); 
$myqueryTopMenu = new WP_Query(); 
$myqueryTopMenu->query(array(
    'cat' => "$cat,-$catHidden", 
    'post_not_in' => get_option('sticky_posts') 
)); 
$mypostsheadercount = $myqueryTopMenu->found_posts; 

if($mypostsheadercount > 0) 
{ 
global $post; 
$mypostsheader = get_posts(array('cat' => "$cat,-$catHidden",'showposts' => $cb2_current_count)); 
$current_page = get_post($current_page); 
?> 
+1

什麼不行?你會得到什麼錯誤? – 2010-06-29 12:11:04

+0

沒有錯誤,菜單在示例2中沒有寫入瀏覽器,但在示例1中。這隻出現在這個特定的安裝上,恰好在IIS中運行。我已經縮小到if($ mypostsheadercount> 0)代碼塊。如果我將測試更改爲> =它工作正常,所以我的問題顯然是在獲取變量計算。 – 2010-07-01 12:19:26

回答

1

我看不出IIS是影響本 - 你確定兩個環境都運行同一版本的WordPress?

我還建議使用posts_per_pageshowposts - 如文檔中提到,showposts已被棄用,並可能在不久的將來被徹底清除。

+0

經過一些進一步的測試後,我發現如果我將if($ mypostsheadercount> 0)更改爲'> ='菜單寫入。所以,顯然在IIS中獲取這個數量變量存在一個問題。 – 2010-07-01 12:15:10

+0

順便說一句,我改爲posts_per_page。他正在運行WordPress 3.0 – 2010-07-01 12:16:01