在我的主题中,我为用户提供了一个选项,可以设置一个“博客类别”,在index.php
使用WP_Query
:
$shortname = get_option(\'of_shortname\');
$cat_option = get_option($shortname.\'_cats_in_blog\');
$catid = get_cat_ID($cat_option);
$paged = get_query_var( \'paged\' ) ? get_query_var( \'paged\' ) : 1;
$args = array(
\'cat\' => $catid,
\'paged\' => $paged
);
$query = new WP_Query( $args );
// Queries fine, but search stops working
while ( $query->have_posts() ) : $query->the_post();
// Loop stuff here
endwhile;
这很好,但搜索小部件坏了。我还尝试使用
query_posts
但这有相反的效果;查询的类别未显示,但搜索仍起作用。下面是代码:
$shortname = get_option(\'of_shortname\');
$cat_option = get_option($shortname.\'_cats_in_blog\');
$catid = get_cat_ID($cat_option);
// Search is working, querying is not
global $query_string; // required
$posts = query_posts($query_string.\'&posts_per_page=3&cat=$catid\');
while ( $query->have_posts() ) : $query->the_post();
// Loop stuff here
endwhile;
我检查了
$catid
变量,它将返回应该返回的内容。我是以错误的方式还是在错误的地方提出质疑?非常感谢您的帮助,提前感谢。
最合适的回答,由SO网友:Chip Bennett 整理而成
对于第二个示例,我认为您启动循环的方式不正确。你在声明$query
, 哪些还没有全球化?
// Search is working, querying is not
global $query_string; // required
$posts = query_posts($query_string.\'&posts_per_page=3&cat=$catid\');
while ( $query->have_posts() ) : $query->the_post();
尝试忽略
$query
从你的循环开始?
// Search is working, querying is not
global $query_string; // required
$posts = query_posts($query_string.\'&posts_per_page=3&cat=$catid\');
while ( have_posts() ) : the_post();
。。。看看这是否有区别?
对于第一个示例,“搜索小部件中断”是什么意思?
EDIT
哇,我完全忽略了这一点:您将变量作为字符串传递:
$posts = query_posts($query_string.\'&posts_per_page=3&cat=$catid\');
请尝试以下操作:
$posts = query_posts( $query_string . \'&posts_per_page=3&cat=\' . $catid );
。。。所以你的
$catid
正确分析。