这真是个令人讨厌的问题。我接管了一个包含多个信息的网站,这些信息在一个自定义字段中序列化。例如:
if ($new_query->have_posts()) :
while ($new_query->have_posts()) : $new_query->the_post();
$ids[] = get_post_custom( get_the_ID() );
print_r($product_custom_fields[\'item_data\']);
endwhile;
endif;
将返回以下内容:
{i:0;s:0:"";s:13:"regular_price";s:4:"1000";s:10:"sale_price";s:0:"";s:6:"weight";s:0:"";s:10:"tax_status";s:7:"taxable";s:9:"tax_class";s:0:"";s:12:"stock_status";s:7:"instock";s:12:"manage_stock";s:3:"yes";s:10:"backorders";s:2:"no";}
我希望能够运行一个查询,按“常规价格”订购所有这些项目,但无法确定实现这一目标的最佳方式。
我目前决定进行初步查询:
$new_query = new WP_Query( $args );
if ($new_query->have_posts()) :
while ($new_query->have_posts()) : $new_query->the_post();
$ids[] = get_the_ID();
endwhile;
endif;
这会将所有正确的项都放入数组$id中。然后,我可以运行一个函数,通过处理序列化数据,将这些ID按我想要的顺序排序。然后我可以运行:
query_posts(array(\'post__in\' => $ids) );
它将根据我设置的ID和顺序过滤我的主要结果。
问题是,这会两次查询帖子,可能有点冗长。
如果有人能推荐一种更简洁的方法,可能是直接向查询中注入SQL,那将不胜感激。