通过变量将参数传递给WP_QUERY

时间:2015-06-04 作者:authorandrew

我正在尝试使用插件PrivateContent来限制对某些页面/类别的访问。我有一个函数(getAllowedCategories()),它读取当前用户的私有内容访问级别,并输出用户有权访问的类别ID列表。我试图用它来构建一个foreach()循环,将每个ID传递给一个WP\\u查询,并生成该类别中最新的两篇文章。但当我尝试使用变量作为WP\\u查询的参数时,它根本不进行过滤。这是我的代码:

<?php

$currentCats = getAllowedCategories($user_data);
foreach ($currentCats as $currentCat) { 
    echo $currentCat . "<br/>";
    $parameters = "\'category__in=" . $currentCat . "\'";
    $aj_query = new WP_Query( $parameters );

    if ( $aj_query->have_posts() ) {
        echo \'<ul>\';
        while ( $aj_query->have_posts() ) {
            $aj_query->the_post();
            echo \'<li>\' . get_the_title() . \'</li>\';
        }
        echo \'</ul>\';
    }
    wp_reset_postdata();
}
?>

2 个回复
SO网友:Rarst

您正在将参数字符串包装在不必要的引号层中:

  • $parameters = "\'category__in=1\'"; — 错误$parameters = \'category__in=1\'; — 右
通常最好使用数组作为查询参数:

  • $parameters = [ \'category__in\' => 1 ];

SO网友:authorandrew

WordPress代码指南在这一点上把我绊倒了。它将查询参数包装在单引号中,当所有内容都是纯文本时(例如。$aj_query = new WP_Query( \'category__in=4\');)

无需将$参数变量传递到WP_QUERY (虽然我认为这种方法也可能有效)通过放弃单引号并传递$currentCat 直接进入WP_QUERY, 一切都过滤得恰到好处。查询的最终代码如下:

$aj_query = new WP_Query( "category__in=" . $currentCat);

这将正确读取变量,并直接返回该类别中的所有帖子(不是子帖子——如果要包含子类别,请使用"cat" 而不是"category__in".

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post