函数QUERY_POST禁用CURRENT_PAGE_MENU类

时间:2017-02-10 作者:Derk Jan Speelman

我有一个页眉和一个页脚菜单(它们是相同的:主菜单)。当我在页面上时,wordpress会添加如下类current_page_menu. 但在我使用query_posts() 功能菜单after 此函数没有像这样添加那些类current_page_menu

以下是导致该错误的代码:

<?php
  $title_slug = strtolower(str_replace( " ", "-" , the_title_attribute(\'echo=0\') ) );
  $id_obj = get_category_by_slug($title_slug);
  $cat_id = $id_obj->term_id;
  query_posts( \'cat=\'.$cat_id.\'&post_status=publish,future&paged=\'.get_query_var(\'paged\') );
?>
不过,这段代码非常有用。因为它确保通过添加页面并选择类别页面模板(而不仅仅是指向该类别的链接)来创建类别页面。我必须这样做,因为我的分类页面需要有子页面。

如果有人知道一个解决方案,我将不胜感激!

1 个回复
最合适的回答,由SO网友:Tunji 整理而成

问题是由query_posts 函数,此函数更改全局$wp\\u查询,菜单遍历器使用该查询检查和添加类,如current_page_menu 至菜单项。

一种解决方案是编写一个新的自定义查询并循环执行,而不是使用query_posts.

$title_slug = strtolower(str_replace( " ", "-" , the_title_attribute(\'echo=0\') ) );
$id_obj     = get_category_by_slug($title_slug);
$cat_id     = $id_obj->term_id;
$args       = \'cat=\'.$cat_id.\'&post_status=publish,future&paged=\'.get_query_var(\'paged\');
// The Query
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) : ?>
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
            //YOUR CONTENT
    <?php endwhile; ?>
        /* Restore original Post Data */
    <?php wp_reset_postdata(); ?>
<?php endif; ?>

References:

相关推荐

使用WP_QUERY混合发布日期和发布元值

正在寻找使用自定义字段将旧帖子推送到WP\\u查询中的方法。例如,我今年有10篇文章,想将过去的2篇文章重新发布到自定义rss提要。因此,对于旧帖子,必须按照帖子日期和帖子元中的值对帖子进行排序:new post - (post date: 2018-11-11) new post - (post date: 2018-11-10) old post - (post date: 2017-05-01, post-meta date: 2018-11-09) new post - (