Visual Composer Post Grid自定义查询今日日期

时间:2016-09-20 13:46:26

标签: php wordpress visual-composer

我在wordpress网站上使用http://vc.wpbakery.com/的视觉作曲家。 我的问题是在帖子网格的自定义查询中。

基本上我选择所有即将发生的事件(帖子类型事件),其中事件结束日期(自定义字段)是> =今天。

我的查询字符串(未转义):

paged=1&posts_per_page=-1&offset=0&post_status=publish&ignore_sticky_posts=0&orderby=meta_value&order=DESC&post_type[event]=event&meta_key=event-end-date&meta_query[0][key]=event-end-date&meta_query[0][value]=2016-09-20&meta_query[0][compare]=>=&meta_query[0][type]=DATE

让我失望的是今天的日期固定为:2016-09-20。 现在,每当事件通过,我手动必须更新此日期,以便该事件不再在即将到来的列表中表示。

是否有可能在wordpress查询字符串中设置像今天这样的更改值?

VC只允许我插入一个查询字符串,这样我就无法处理变量,除了某种机制允许我用当前日期替换一些template-keyword。

或者还有其他一些方法可以过滤即将发生的事件,例如使用标签,发布元值等等吗?

- 已解决 -

  • 每12小时更新一次活动
  • 如果已保存则更新活动

的functions.php

add_filter('cron_schedules', 'my_cron_schedules');
function my_cron_schedules( $schedules ) {
    $schedules['halfday'] = array(
        'interval' => 43200,
        'display' => __('halfday')
    );
    return $schedules;
}

if ( !wp_next_scheduled( 'my_halfday_event' ) ) {
    wp_schedule_event( time(), 'halfday', 'my_halfday_event' );
}
add_action('my_halfday_event', 'update_events');

function save_event( $post_id ) {
    $post_type = get_post_type( $post_id );
    if ( $post_type != 'event' ) {
        return;
    }
    update_events();
}
add_action( 'save_post', 'save_event' );

function update_events() {
    $events = get_posts( array(
        'posts_per_page' => -1,
        'post_type' => 'event'
    ) );
    foreach( $events as $event ) {
        $event_end_date = get_post_field( 'event-end-date', $event->ID );
        if ( is_wp_error( $event_end_date ) ) {
            continue;
        }
        $today = current_time('Y-m-d');
        $event_expired = $event_end_date < $today ? 'true' : 'false';
        $event_updated = current_time('Y-m-d H:i:s');
        update_post_meta($event->ID, 'event-expired', $event_expired);
        update_post_meta($event->ID, 'event-updated', $event_updated);
    }
}

新查询

paged=1&posts_per_page=-1&offset=0&post_status=publish&ignore_sticky_posts=0&orderby=meta_value&order=DESC&post_type%5Bevent%5D=event&meta_key=event-end-date&meta_query%5B0%5D%5Bkey%5D=event-expired&meta_query%5B0%5D%5Bvalue%5D=false&meta_query%5B0%5D%5Bcompare%5D=%3D&meta_query%5B0%5D%5Btype%5D=CHAR

1 个答案:

答案 0 :(得分:0)

我在前一段时间遇到了同样的问题,并在我的自定义查询中使用了DATE = $今天,它运行正常。看一下这里发布的问题和解决方案:Visual Composer custom query with OR operator