尝试将数组放入‘POST__IN’=>ARRAY()查询不起作用

时间:2012-02-23 作者:JamesG

轻微问题,我有以下代码:

$purchaseprodid = $_GET[\'ids\'];
$args = array(
                  \'post_type\' => \'prizes\',
                  \'post__in\' => array($purchaseprodid)
                  );
                query_posts($args);

                while (have_posts()) : the_post(); 
我在url中得到了id的逗号分隔数字,他们似乎没有查询帖子。如果我手动键入id,它们就可以正常工作,但在使用变量$purchaseprodid时就不行了。

有什么想法吗?

谢谢

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

您需要分解从中获得的字符串$_GET[\'ids\'] 进入数组,此时您正在解析一个to字符串post__in 而不是ID数组。

尝试

$purchaseprodid = isset($_GET[\'ids\']) ? explode(\',\',$_GET[\'ids\']) : array();
然而,您有时会在使用$_GET 使用WordPress,最好使用提供的API并注册变量,see this question.

SO网友:Elio

您可以使用标准的WordPress函数wp_parse_id_list 像这样:

$purchaseprodid = isset( $_GET[\'ids\'] ) ? wp_parse_id_list( $_GET[\'ids\'] ) : array();
检查输入数据是否已经是数组,清除重复项并将每个数组元素的类型转换为整数。

更多信息,请访问:

https://developer.wordpress.org/reference/functions/wp_parse_id_list/

结束