【问题标题】:Wordpress: Sort Order by Custom Field NumericallyWordpress:按自定义字段数字排序顺序
【发布时间】:2010-07-27 16:24:31
【问题描述】:

如何对存储为字符串的自定义字段数据进行数字排序。我无法将其更改为数据库。

query_posts($query_string. '&orderby=meta_value&meta_key=price&order=DESC' );

这是我正在使用的,但它会将其排序为字符串,因为它也存储为字符串。

谁能告诉我如何在不更改数据库的情况下将其转换为数字?

提前致谢。

迷宫

【问题讨论】:

    标签: wordpress sorting field


    【解决方案1】:

    您可以使用转换字符串元数据的custom query string 来做到这一点:

    $querystr = "
        SELECT wposts.*
        FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
        WHERE wposts.ID = wpostmeta.post_id
        AND wpostmeta.meta_key = 'price' 
        AND wposts.post_type = 'post'
        ORDER BY ABS(wpostmeta.meta_value) DESC
    ";
    

    如果您的元值包含美元符号 ($123.45),您可以调整 ORDER BY 以将其删除:

        ORDER BY ABS(SUBSTRING(wpostmeta.meta_value, 2)) DESC
    

    【讨论】:

    • 它仍然对我不起作用:(它仍然以字符串形式出现并给我这样的结果:21300 > 2750 > 25700 > 40000 > 30000 > 20000 > 25000 > 5000 它应该是: 40000 > 30000 > 25700 > 25000 > 以此类推....
    • 嗯,不如在 ORDER BY 子句中尝试一下 CAST() (dev.mysql.com/doc/refman/5.0/en/…)。类似ORDER BY CAST(wpostmeta.meta_value AS DECIMAL) DESC
    猜你喜欢
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多