按自定义字段排序不起作用

时间:2015-10-21 作者:KVDD

我有一个自定义查询:

<?php
query_posts(array(
\'post_type\' => \'properties\',
\'meta_key\' => \'pd_city\',
\'orderby\' => \'meta_value\',
\'order\' => \'ASC\',
\'posts_per_page\' => 5,
\'paged\' => get_query_var(\'paged\')
));
?>
但它似乎不起作用。本页上的帖子应该按城市(伯纳比、新威斯敏斯特、里士满、萨里郡)的字母顺序排列,但它们是按随机顺序排列的(我不知道它们是如何排列的)。

不知道我错过了什么。我通过“post-Meta”Wordpress插件创建了“properties”post\\u类型,如果这有所不同的话。

http://www.professionalrentals.ca/new-properties-test-page/


尝试使用WP\\u查询-同时DOES NOT WORK

<?php
$paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
$args = array(
    \'post_type\' => \'properties\',
    \'meta_key\' => \'pd_city\',
    \'orderby\' => \'meta_value\',
    \'order\' => \'ASC\',
    \'posts_per_page\' => 5,
    \'paged\' => $paged
);
$the_query = new WP_Query( $args );
?>

<?php if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); ?>

3 个回复
SO网友:darrinb

Piter是对的,不要使用query_posts.

您可以这样做:

$paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
$args = array(
    \'post_type\' => \'properties\',
    \'meta_key\' => \'pd_city\',
    \'orderby\' => \'meta_value\',
    \'order\' => \'ASC\',
    \'posts_per_page\' => 5,
    \'paged\' => $paged
);

$query = new WP_Query( $args );
只要确保你的价值观适合你的post_typemeta_key 参数。一、 e,我对所有元键使用下划线:_properties.

我在客户的项目上运行了一个几乎相同的查询:http://centerpoint.com/properties/?pgd=1&v=list&filter=1&list_type=all&sortby=city

SO网友:vancoder

我快速查看了您正在使用的Post Meta插件,它似乎将其元数据保存为序列化数组。因此,您的查询永远不会工作-WP不知道如何排序一组序列化数组。

如果您真的想使用插件(而不是构建自己的元字段),我建议您转储Post-meta并切换到Advanced Custom Fields. 注意,您需要停用Post Meta,ACF才能工作。

SO网友:KVDD

好吧,我有一个非常荒谬的解决方法,它最终会多次运行查询(我相信我会在对此的评论中被撕碎),但它现在起作用了,就这样吧。

只有当您确切知道要在哪些字段之间进行排序时,这才有效。我有一个按字母顺序排列的城市列表。我知道只有这些城市(我想你可以运行一个单独的查询来从数据库中获取这个数组,但我不想再进行查询)

<?php
$listOfCities = array(\'burnaby\', \'delta\', \'ladner\', \'new westminster\', \'north vancouver\', \'richmond\', \'tsawwassen\', \'vancouver\', \'white rock\');

foreach ($listOfCities as $cities) {

$args = array(
\'post_type\' => \'properties\',
\'meta_key\' => \'pd_city\',
\'meta_query\' => array(
        array(
            \'key\' => \'pd_city\',
            \'value\' => $cities,
            \'compare\' => \'LIKE\'
        )),
\'order\' => \'ASC\'
);
$the_query = new WP_Query( $args );

if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post();

    echo get_field(pd_city);

endwhile; endif; wp_reset_postdata();

}
?>
尽管客户端希望它以不同的方式订购,但由于它是根据阵列中的第一个到最后一个来处理它,我只是将阵列更改为:

$listOfCities = array(\'vancouver\', \'richmond\', \'burnaby\', \'new westminster\', \'north vancouver\', \'white rock\', \'delta\', \'ladner\', \'tsawwassen\');

相关推荐