问题描述
我创建了一个名为“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 );
} );
它不起作用:
你能帮我调试一下这段代码吗。
解决方法
日期字段的 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') ) ...
但不起作用!
您是否知道如何保留第一个过滤器并为所有未填充的项目设置另一个过滤器。
再次感谢。