按序列化的自定义字段中的值排序

时间:2012-02-03 作者:mjjwatson

这真是个令人讨厌的问题。我接管了一个包含多个信息的网站,这些信息在一个自定义字段中序列化。例如:

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,那将不胜感激。

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

我会编写一个转换器,将所有这些数据分离一次。

无法针对序列化数据构建真正快速的查询。

结束

相关推荐

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

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