我有一个自定义的帖子类型“ITEM”,允许管理员使用ACF文本字段添加“ITEM Number”。
在另一种自定义的“组”Post类型中,管理员可以使用ACF转发器输入多个“项目编号”,以便“项目”与此组关联。我需要循环来显示所有具有“项目编号”的帖子,该编号与在组页面上输入到转发器的编号相匹配。
我正在使用get\\u posts()查询组页面,以显示与组管理页面中输入的数字之一匹配的所有项目帖子。
它正在失败。我是在meta\\U查询中使用meta\\U值还是meta\\U查询。
首先,我必须将ACF中继器的阵列压缩展平,因为它呈现一个嵌套阵列。然后,我必须将该数组转换为值,以便将其传递给“meta\\u query”中的“value”。
以下是我目前掌握的情况:
// get the ACF field array
$arrays = get_field(\'included_inventory\');
// outputs:
Array
(
[0] => Array
(
[item_number] => 5550
)
[1] => Array
(
[item_number] => 5551
)
[2] => Array
(
[item_number] => 5552
)
[3] => Array
(
[item_number] => 1234
)
)
// setup array
$result = array();
// flatten the array
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($arrays));
// get the values
foreach ($it as $key => $value) {
$result[] = strval($value);
}
// outputs:
Array
(
[0] => 5550
[1] => 5551
[2] => 5552
[3] => 1234
)
// format the values
$results = "\'" . implode("\',\'", $result) . "\'";
// outputs: \'5550\',\'5551\',\'5552\',\'1234\'
$posts = get_posts( array(
\'post_type\' => \'liquidation\',
\'posts_per_page\' => 10,
\'orderby\' => \'date\',
\'order\' => \'DESC\',
\'meta_key\' => \'item_number\',
\'meta_query\' => array(
array(
\'key\' => \'item_number\',
\'value\' => array($results), // needs to be formatted as array(\'number\',\'number\',\'etc\')
\'compare\' => \'IN\'
)
)
));
我肯定我只是忽视了一些简单的事情。。但是,我已经盯着这个看太久了。。看不到通过了,哈哈。
我要么没有收到帖子,要么出现“警告:trim()期望参数1为字符串”错误
SO网友:revive
这不是一个直接的答案,因为我的解决方案是以另一种方式实现这一点。
我没有从主页ACF字段中获取值(数组),而是在要显示的每个页面中添加了一个日期字段。因此,我根据该日期(针对每个页面)进行查询,而不是在主页上输入要显示的页面列表。
<?php
global $post;
$today = date("Ymd");
$myposts = get_posts( array(
\'post_type\' => \'liquidation\',
\'posts_per_page\' => 5,
\'meta_key\' => \'active_till\',
\'orderby\' => \'meta_value\',
\'order\' => \'ASC\',
\'meta_query\' => array(
array(
\'key\' => \'active_till\',
\'compare\' => \'>=\',
\'value\' => $today,
\'type\' => \'DATE\',
),
),
));
if ( $myposts ): ?>
<?php foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
and so on...