内部WP_Query
, 我在试着按价格订购邮件。
问题是,价格值不是在ACF内部手动定义的,而是来自于在循环低谷帖子时进行的api调用,如下所示:
<?php while ( have_posts() ): the_post();
$asin = get_field("asin");?>
<h3><?php the_title(); ?></h3>
<p><?php echo aawp_get_field_value($asin, \'price\'); ?></p>
<?php endwhile; ?>
这意味着在实际运行之前,数字值(价格)不可用
$the_query
, 所以我不能用这样的东西:
\'meta_key\' => \'price\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'ASC\'
因为;“价格”;当时不存在。
我搜索了很多,但没有找到解决方法。也许我需要在循环后订购帖子?你会怎么做?
提前感谢!
EDIT(基于shanebp答案)
我是这样做的。
<?php
$the_query = new WP_Query( array (
\'post_type\' => \'prodotto\',
\'posts_per_page\' => 500,
\'fields\' => \'ids\',
\'tax_query\' => array(
array (
\'taxonomy\' => \'categoria\',
\'field\' => \'slug\',
\'terms\' => \'uso-quotidiano\',
)
),
));
$items = array();
$posts = $the_query->posts;
foreach($posts as $post) {
$asin = get_field("asin");
$price = aawp_get_field_value($asin, \'price\');
// refining price value
$price = str_replace(\',\', \'.\', $price);
$price = preg_replace("/[^0-9\\.]/", "", $price);
$price = (float)$price;
$items[] = array("id"=>get_the_ID(), "price"=>$price);
}
// sorting (asc)
usort($items, function ($item1, $item2) {
return $item1[\'price\'] <=> $item2[\'price\'];
});
// OUTPUT
echo \'<section class="suggested_product_card_container">\';
foreach ($items as $item) {
$itemPrice = $item[\'price\'];
if ($itemPrice < 29) {
$itemID = $item[\'id\'];
include(locate_template(\'/template-parts/components/component-suggested-product-card.php\'));
}
}
echo \'</section>\';
wp_reset_postdata();
?>