首页 > 解决方案 > Wordpress:根据 ACF 日期在存档中设置自定义字段

问题描述

我创建了一个名为“date_dexpiration”的自定义字段 ACF,格式为:d/m/YH:i

当我创建一个没有到期日期的新帖子时,“date_dexpiration”字段未填写并保持为空。

我想在存档(使用 elementor 帖子小部件创建)中设置一个自定义过滤器,以隐藏日期为“date_dexpiration”< 今天的所有帖子。我写了这个插入function.php的代码

add_action( 'elementor/query/filter_expiration_date', function( $query ) {
    $today = date('d/m/Y H:i');
    $meta_query = $query->get( 'meta_query' );
    $meta_query = [
        [       
        'key'       => 'date_dexpiration', 
        'value'     => $today,
        'compare'   => '>=',
        ]
    ];
    $query->set( 'meta_query', $meta_query );
} );

它不起作用:

你能帮我调试这段代码吗?

标签: wordpressfilteradvanced-custom-fieldspostsadd-action

解决方案


日期字段的 ACF 默认格式是Ymd,因此您需要转换$todayYmd格式。试试下面的代码。

add_action( 'elementor/query/filter_filter_expiration_date', function( $query ) {
    $today = date('d/m/Y H:i');
    $today = date( 'Ymd', strtotime( $today ) );
    $meta_query = $query->get( 'meta_query' );
    $meta_query = [
        [       
        'key'       => 'date_dexpiration', 
        'value'     => $today,
        'compare'   => '>=',
        ]
    ];
    $query->set( 'meta_query', $meta_query );
} );

推荐阅读