2010-06-29 194 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