辅助侧边栏中的get_post()会扰乱主要侧边栏中的内容

时间:2014-01-31 作者:Henrik Erlandsson

我使用get\\u posts()生成一个以当前页面为父页面的帖子菜单。这会将post\\u id设置为第一个这样的post\\u id,而不是原始页面的post\\u id。也就是说,我希望Wordpress继续,就好像查询后什么都没有发生一样。

这是我在侧边栏中使用的代码。php:

$args = array(
\'posts_per_page\'   => -1,
\'offset\'           => 0,
\'category\'         => \'\',
\'orderby\'          => \'title\',
\'order\'            => \'ASC\',
\'include\'          => \'\',
\'exclude\'          => \'\',
\'meta_key\'         => \'\',
\'meta_value\'       => \'\',
\'post_type\'        => $slug,
\'post_mime_type\'   => \'\',
\'post_parent\'      => \'\',
\'post_status\'      => \'publish\',
\'suppress_filters\' => true );

$pt=get_the_title();
$posts=get_posts($args);
//loop children custom posts.
if ($posts) {
    echo \'<div class="generated-menu">\';
    echo \'<ul class="left-navigation"><li class="active"><a href="/\'.$slug.\'">\'.$m.\'</a>\';
    // Start the Loop.
    foreach ($posts as $p) {

        $t=get_the_title($p->ID);
        $l=get_permalink($p->ID);
        $a=\'\';if ($t==$pt) $a=\' class="active"\';
        echo \'<ul><li\'.$a.\'>\';
        echo \'<a href="\'.$l.\'">\'.$t.\'</a>\';
        echo \'</li></ul>\';

    }   //foreach
    echo \'</li></ul></div>\';
}   //if has posts
所有可用信息均表示get\\u posts()不会影响任何内容。嗯,这肯定是个谎言,除非你能发现我代码中的错误。

如果我把单行注释掉$posts=get_posts($args);, 主要内容可以。

我尝试过使用wp\\u reset\\u postdata(),没有区别。

感谢专业人士的帮助:)

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

使用$posts 可能会干扰;尝试将其更改为其他类似的内容$menu_posts 或类似。

SO网友:Shellbot

您需要在if语句后重置查询。

<?php wp_reset_postdata(); ?>

看看这是否奏效。

结束

相关推荐

Register multiple sidebars

我正在注册我的边栏,如下所示:$sidebars = array ( \'sidebar-10\' => \'Main Sidebar\', \'sidebar-11\' => \'Homepage Area One\', \'sidebar-12\' => \'Homepage Area Two\', \'sidebar-1