无论格式如何,自定义时间字段都不会排序

时间:2013-11-05 作者:Sean M.

我正在为WordPress使用一个自定义字段插件(高级自定义字段),并且正在使用一个设置为“h:mm tt”格式的时间选择器字段。使用典型的WP查询,我试图按“开始时间”升序排序,但返回的帖子列表似乎按升序数字排序(即下午12:00将在下午6:00之后出现)。我检查了自定义字段数据,它肯定被保存为UNIX时间戳(例如,开始时间为“1383224400”)。

我已经将一些参数组合传递给query\\u帖子,但我尝试过的都没有成功。以下是我使用的查询:

<?php $args = array(
    \'post_type\' => \'friday_event\',
    \'orderby\' => \'meta_value_num\',
    \'meta_key\' => \'start_time\',
    \'order\' => \'ASC\',
    \'nopaging\' => true
);
query_posts( $args );
while ( have_posts() ) : the_post(); ?>
你知道我做错了什么吗?我曾尝试使用自定义的“meta\\u查询”,将“meta\\u value”设置为一个变量并进行自定义比较,但仍然无法使帖子正确排序。非常感谢您的帮助!

2 个回复
SO网友:s_ha_dum

我看不出你的代码有什么不应该工作的原因,当我测试的时候,它确实可以工作。我认为以下情况之一正在发生:

你的meta_key 是错误的。也许它是由一个_ 例如

  • 您没有正确的或一致的时间戳,您有粘性帖子阻碍了查询,有一个过滤器作用于查询
  • 要解决#3,请添加\'ignore_sticky_posts\' => true, 到参数。对于其他人,我不能说。我没有能力调查这些可能性。

    SO网友:Fernando Baltazar

    两年前我也遇到了同样的问题,但我得到了一个提示,可以正确排序自定义元字段
    首先必须定义orderby字段,例如,您编写了“meta\\u value\\u num”,但哪个是value\\u num?或者哪个字段具有要排序的一个或多个值
    例如,我必须对价格值进行排序

    $args = array(
    \'post_type\' => \'post\',
    \'posts_per_page\' => \'10\',
    \'paged\' => get_query_var( \'paged\' ),
    \'key\' => \'price_value\',
    \'value\' => \'price_value\',
    \'type\' => \'numeric\',
    \'orderby\' => \'price_value\',
    \'order\'   => \'ASC\'
    );
    
    query_posts( $args );
    ?>
    
    ?php if (have_posts()) : ?>
    ?php while (have_posts()) : the_post(); ?>
    
    其中,price\\u value是WP将查看的元字段,也是要排序的元值编号。即使数据未格式化,也可以对所有数据进行排序。

    结束

    相关推荐

    Security and Must Use Plugins

    从codex article 必须使用插件:只需将文件上载到mu插件目录即可启用,无需登录我觉得这是一个潜在的安全问题。在站点上运行插件中的任何代码之前,必须通过管理面板激活常规插件。我一直认为这是一个明智的安全预防措施,因为攻击者如果能够以某种方式将文件上载到plugins文件夹,则在运行代码之前,还必须访问和修改数据库。这个mu-plugins 文件夹似乎提供了一种简单的方法来避免这种情况。我知道WordPress开发人员比我更了解安全性,所以我想知道是否有人能解释为什么这不是一个安全漏洞。

    无论格式如何,自定义时间字段都不会排序 - 小码农CODE - 行之有效找到问题解决它

    无论格式如何,自定义时间字段都不会排序

    时间:2013-11-05 作者:Sean M.

    我正在为WordPress使用一个自定义字段插件(高级自定义字段),并且正在使用一个设置为“h:mm tt”格式的时间选择器字段。使用典型的WP查询,我试图按“开始时间”升序排序,但返回的帖子列表似乎按升序数字排序(即下午12:00将在下午6:00之后出现)。我检查了自定义字段数据,它肯定被保存为UNIX时间戳(例如,开始时间为“1383224400”)。

    我已经将一些参数组合传递给query\\u帖子,但我尝试过的都没有成功。以下是我使用的查询:

    <?php $args = array(
        \'post_type\' => \'friday_event\',
        \'orderby\' => \'meta_value_num\',
        \'meta_key\' => \'start_time\',
        \'order\' => \'ASC\',
        \'nopaging\' => true
    );
    query_posts( $args );
    while ( have_posts() ) : the_post(); ?>
    
    你知道我做错了什么吗?我曾尝试使用自定义的“meta\\u查询”,将“meta\\u value”设置为一个变量并进行自定义比较,但仍然无法使帖子正确排序。非常感谢您的帮助!

    2 个回复
    SO网友:s_ha_dum

    我看不出你的代码有什么不应该工作的原因,当我测试的时候,它确实可以工作。我认为以下情况之一正在发生:

    你的meta_key 是错误的。也许它是由一个_ 例如

  • 您没有正确的或一致的时间戳,您有粘性帖子阻碍了查询,有一个过滤器作用于查询
  • 要解决#3,请添加\'ignore_sticky_posts\' => true, 到参数。对于其他人,我不能说。我没有能力调查这些可能性。

    SO网友:Fernando Baltazar

    两年前我也遇到了同样的问题,但我得到了一个提示,可以正确排序自定义元字段
    首先必须定义orderby字段,例如,您编写了“meta\\u value\\u num”,但哪个是value\\u num?或者哪个字段具有要排序的一个或多个值
    例如,我必须对价格值进行排序

    $args = array(
    \'post_type\' => \'post\',
    \'posts_per_page\' => \'10\',
    \'paged\' => get_query_var( \'paged\' ),
    \'key\' => \'price_value\',
    \'value\' => \'price_value\',
    \'type\' => \'numeric\',
    \'orderby\' => \'price_value\',
    \'order\'   => \'ASC\'
    );
    
    query_posts( $args );
    ?>
    
    ?php if (have_posts()) : ?>
    ?php while (have_posts()) : the_post(); ?>
    
    其中,price\\u value是WP将查看的元字段,也是要排序的元值编号。即使数据未格式化,也可以对所有数据进行排序。