微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Wordpress:根据 ACF 日期在存档中设置自定义字段

如何解决Wordpress:根据 ACF 日期在存档中设置自定义字段

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

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

我想在存档(用 elementor 帖子小部件创建)中设置一个自定义过滤器,以隐藏日期为“date_dexpiration”

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 );
} );

它不起作用:

  • 所有带有空字段“date_dexpiration”的帖子都不会显示
  • 显示所有已填充字段“date_dexpiration”的字段

你能帮我调试一下这段代码吗。

解决方法

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

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 );
} );
,

感谢您的回答。 我不得不稍微更改您提供的代码。 这是我的最新版本:

add_action( 'elementor/query/filter_expiration_date',function( $query ) {
        $today = date('Ymd');
        $meta_query = $query->get( 'meta_query' );
        $meta_query = [
            [       
            'key'       => 'date_dexpiration','type'      => 'DATE',]
        ];
        $query->set( 'meta_query',$meta_query );
} );

当 ACF 字段已满(对于过期和未过期的值)时,它工作正常,但当该字段未满或帖子不存在时,它不起作用。这些帖子不会显示。

我试过了:

if( get_field('date_dexpiration') ) ...

但不起作用!

您是否知道如何保留第一个过滤器并为所有未填充的项目设置另一个过滤器。

再次感谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。