WordPress事件按元值日期排序

时间:2014-06-04 18:43:03

标签: php wordpress plugins

我在获取一个参数数组以按Wordpress中的日期对事件列表进行排序时遇到了一些麻烦。我已经在Stack Overflow和其他地方找到了几个建议的解决方案,但是经过大量的试验和错误后,这些解决方案似乎都没有工作。

没什么特别的,它应该比这容易得多。也许它更容易,我只是在思考它?非常感谢任何帮助。

我使用插件http://www.advancedcustomfields.com在帖子中设置了自定义日期字段,数据库中的字段名称为" event_date"。

我已尝试过各种形式的以下内容:

$args = array(
     'post_status'       => 'publish',
     'meta_key'          => 'event_date',
     'orderby'           => 'meta_value_num',
     'order'             => 'DESC',
     'posts_per_page'    => 6,
     'paged'             => $paged,
     'post__not_in'      => $exclude_array
);

$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query($args);

$default_excerpt_length = 250;

$args = array(
    'post_status'       => 'publish',
    'meta_key'          => 'event_date',
    'meta_value_num'    => time(),
    'meta_compare'      => '>=',
    'orderby'           => 'meta_value_num',
    'order'             => 'DESC',
    'posts_per_page'    => 6,
    'paged'             => $paged,
    'post__not_in'      => $exclude_array
);

$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query($args);

$default_excerpt_length = 250;

$today = date('Y-m-d');

query_posts(array(
    'post_type'         => 'events',
    'posts_per_page'    => 6,
    'paged'             => $paged,
    'meta_key'          => 'event_date',
    'orderby'           => 'meta_value',
    'order'             => 'DESC',
    'meta_query' => array(
        array(
        'key'        => 'event_date',
        'meta-value' => $value,
        'value'      => $today,
        'compare'    => '>=',
        'type'       => 'CHAR'
        )
    )
));

2 个答案:

答案 0 :(得分:8)

这最终导致我需要的解决方案:http://www.advancedcustomfields.com/resources/field-types/date-picker/

我最终通过该网址将高级自定义字段设置更改为yymmdd。

这是我用来查询帖子的内容:

$args = array(
  'post_status'       => 'publish',
  'posts_per_page'    => 6,
  'paged'             => $paged,
  'meta_key'          => 'event_date',
  'orderby'           => 'meta_value_num',
  'order'             => 'ASC'
);

这就是我用来调整页面上日期的视觉输出:

<?php
$source = get_field('event_date');
$date = new DateTime($source);
echo $date->format('F j, Y');
?>

答案 1 :(得分:0)

在搜索了多个相似的帖子之后,我将各种其他SO帖子的一部分放到了一起的解决方案中,希望它可以对其他人有所帮助。

我有一个名为“ date”的自定义元键(我知道命名约定很差),该查询显示将来所有带有自定义“ date”元字段的帖子,并按与今天最接近的顺序排序。

$args = array(
        'post_type' => 'training-course',
        'posts_per_page' => '-1',
        'meta_key' => 'date',
        'orderby' => 'meta_value',
        'order' => 'ASC',
        'meta_query' => array(
            array(
                'key' => 'date',
                'value' => date("YYmmdd"),
                'compare' => '<='
            )                   
         )
    );