按多个元键值对帖子进行排序

时间:2014-07-22 作者:Björn

我对wordpress并不陌生,但我不太擅长PHP。我希望有人能帮助我,因为我已经尝试了5个多小时寻找解决方案,但都没有成功。

所以我有一个档案。php页面中,我想排序的3元键的职位。它们都有数值。这些是元字段的名称:“vorstellung filmdatum”(日期)、“vorstellung uhrzeit stunde”(小时)和“vorstellung uhrzeit minute”(分钟)。

此时,我正在使用以下代码,但它只按最后一个元键进行排序(本例中为“vorstellung uhrzeit minute”)。

global $wp_query;
$args = array_merge( $wp_query->query, array( \'posts_per_page\' => 12, \'meta_key\' => \'vorstellung-filmdatum\', \'orderby\' => \'meta_value_num\', \'order\' => \'ASC\', \'meta_key\' => \'vorstellung-uhrzeit-stunde\', \'orderby\' => \'meta_value_num\', \'order\' => \'ASC\', \'meta_key\' => \'vorstellung-uhrzeit-minute\', \'orderby\' => \'meta_value_num\', \'order\' => \'ASC\', ) );
query_posts( $args );
while (have_posts()) : the_post(); ?>
如何将其更改为按所有三个元键排序?

我希望它对帖子进行如下排序:

--日期1

---第1小时

------第1分钟

------第2分钟

---第2小时

------第1分钟

------第2分钟

--日期2

---第1小时

------第1分钟

有人能帮我吗?

1 个回复
SO网友:HU ist Sebastian

我认为最好的方法是将完整的日期时间存储在一个元字段中,将其保存为元字段中的时间戳,并通过php datetime对象函数将其转换为显示。

Step 1)
创建带有文本输入的元框,用于输入日期+时间。您可以找到一个很好的元框介绍here.

步骤1.5)如果希望它易于使用,可以在后期编辑屏幕中添加一个用于日期/时间选择的jquery插件,如this one.

Step 2)
在myplugin\\u meta\\u box\\u回调函数中,使用php datetime函数将meta value$value转换为所需的显示格式,如下所示:

if($value){
   $date = date_create($value);
   $value = date_format($date, \'Y-m-d H:i\');
}    
Step 3)
在save\\u metabox操作中,通过php strotime函数将日期/时间值转换为unix时间戳,如下所示:

替换:

 $my_data = sanitize_text_field( $_POST[\'myplugin_new_field\'] );
使用:

 $my_data = strtotime($_POST[\'myplugin_new_field\']);
Step 4)
在存档中,为您的查询提供orderby “meta_value_num”,根据自定义字段的数值对其排序

Step 5)
不要使用query\\u帖子。

Step 6)
如果当前元值的日期高于最后一个元值的日期,请检查while循环

$day = 0;
while $query->have_post {
    $query->the_post;
    $newday = get_post_meta(get_the_ID(),\'NAME_OF_METAFIELD\',true);
    $newdate = date_create($newday);
    $newday = date_format($newdate,\'d\');
    if(!($newday==$day)) {
        $day = $newday;
        echo "Date:".date_format($newdate,\'Y-m-d\');
    }
    echo "Time:".date_format($newdate,\'H:i\');
    //All the other stuff that needs to be displayed
}
Step 7)
完成(或多或少)。。。进行一些调整

我没有把if-then这一小时的内容包括进去,但我想你可以弄清楚^^

结束

相关推荐

尝试按自定义字段‘Order’排序和显示类别(而不是帖子)

我是WordPress的新手。我在“类别”分类法中添加了一个自定义字段。自定义字段是“custom\\u order”,其目的是保存一个数字,以便我的类别可以按照我选择的顺序进行排序和显示。我的问题是我无法让他们分类;我可以显示类别,以及“echo”每个类别的“custom\\u order”编号,但在访问和排序meta\\u值时,我肯定遗漏了一些东西。我也不确定我的做法是否正确。以下是我将字段添加到“新建类别”页面的代码:<?php function taxonomy_add_new_me