使用自定义模板的页面上的导航列表样式不正确(缺少.Current-Menu-Item)

时间:2011-05-09 作者:Andy

我的Wordpress网站使用自定义首页(home.php). 博客页面使用模板(blog.php).

然而,当我访问博客页面时,导航栏不会突出显示当前页面。这是因为.current-menu-item (和班级.current_page_item) 导航中缺少li. 当我访问使用默认页面模板的所有其他页面时,该类被正确包含。

以下是博客页面的模板:

<?php
/*
Template Name: Blog
*/

// Which page of the blog are we on?
$paged = get_query_var(\'paged\');
query_posts(\'cat=-0&paged=\'.$paged);

// make posts print only the first part with a link to rest of the post.
global $more;
$more = 0;

//load index to show blog
load_template(TEMPLATEPATH . \'/index.php\');

?>
我注意到如果我取消对query_posts 然后导航栏样式正常工作,但页面留空。

有什么想法吗?

2 个回复
最合适的回答,由SO网友:Jan Fabry 整理而成

自定义导航菜单使用全局$wp_query 对象来确定当前页面是哪个页面,并应获取该类。query_posts() 替换此$wp_query 对象,因此导航菜单无法应用正确的类。

为什么要对此页面使用单独的模板?如果未指定模板,则应使用主模板(home.phpindex.php) 循环中有正确的帖子,您不需要自己的帖子query_posts().

SO网友:Marco

如Jan所述query_posts() 替换此$wp_query 对象

所以你能做的就是WP_Query 并存储旧的$wp\\u查询对象:

$temp = $wp_query;  
$wp_query = null;
$wp_query = new WP_Query($args); 
while ( $wp_query->have_posts() ) : $wp_query->the_post();
    Do what you need
endwhile;
$wp_query = $temp;
或使用新变量:

$loop = new WP_Query($args); 
while ( $loop->have_posts() ) : $loop->the_post();
    Do what you need
endwhile;

结束

相关推荐

Thesis -style Navigation

我正在研究一个主题,我希望用户能够像论文一样选择要在主题选项页面中显示的页面。我已经在谷歌上搜索了几个小时的逆向工程论文,但还没有找到一个很好的解决方案。我想知道是否有人做过这件事或看过教程。