在Elementor Pro中显示按ACF日期字段排序的WordPress帖子

5ktev3wc  于 2023-03-29  发布在  WordPress
关注(0)|答案(1)|浏览(166)

这可能很容易,但我不能完全得到它排序。我有一个ACF日期时间字段,我正在使用的公告称为“相关日期”。这个字段的存在是因为主页具有最及时的小div,与当前相关的公告,我不能按正常的发布日期排序,因为最新的帖子可能不是最接近当前时刻的帖子。我希望这是有意义的。
任何帮助感激不尽。谢谢!
以下是我的尝试:

add_action( 'elementor/query/homepage_public_notices', function( $query ) {

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

$query->set( 'meta_query', array(
    array(
        'key' => 'relevant_datetime',
        'compare' => '=',
        'value' => $today,
        'type' => 'DATE',
        )
    ) );

$query->set('orderby', 'meta_value'); 
$query->set('order', 'ASC'); 
$query->set('meta_key', 'relevant_datetime');  

} );
o0lyfsai

o0lyfsai1#

让我们分析和调试问题:

  • 你在拍好的动作片吗?
  • 如果你在好钩,你得到好的结果没有排序?
  • 如果你有结果,那么剩下的就是排序。
add_action( 'elementor/query/homepage_public_notices', function( $query ) {
    $today = date_i18n ('Y-m-d');
    
    $meta_key = 'relevant_datetime';
    
    $query->set( 'meta_query', array(
        array(
            'key' => $meta_key,
            'compare' => '=',
            'value' => $today,
            'type' => 'DATE',
        )
    ) );
    $query->set('orderby', 'meta_value');
    $query->set('order', 'ASC');
    $query->set('meta_key', $meta_key);
} );

正如您所示,如果所有条件都正常,它应该可以工作。但我也会尝试以下参数:

// Retrieves posts by Post Status 'publish'
$query->set('post_status', 'publish');

// (boolean) - ignore sticky posts or not (optional).
$query->set('ignore_sticky_posts', false);

// (bool) Default is true - Post information cache (optional).
$query->set('cache_results', false);        

// (bool) Default is true - Post meta information cache (optional).
$query->set('update_post_term_cache', false);

// (bool) Default is true - Post term information cache (optional).
$query->set('update_post_meta_cache', false);

一般来说,在处理这个问题时应该小心,因为很多事情都会影响你的问题。你还应该处理add_action的优先级,并将其值增加到20以上或降低到10以下。
如果你在主题或插件中定义了这个也很重要。如果在插件中定义了,那么它必须在'plugins_loaded'中定义:

add_action( 'plugins_loaded', function( $query ) {
    add_action( 'elementor/query/homepage_public_notices', function( $query ) {
        $today = date_i18n ('Y-m-d');
        
        $meta_key = 'relevant_datetime';
        
        $query->set( 'meta_query', array(
            array(
                'key' => $meta_key,
                'compare' => '=',
                'value' => $today,
                'type' => 'DATE',
            )
        ) );
        $query->set('orderby', 'meta_value');
        $query->set('order', 'ASC');
        $query->set('meta_key', $meta_key);
        
        // Retrieves posts by Post Status 'publish'
        $query->set('post_status', 'publish');

        // (boolean) - ignore sticky posts or not (optional).
        $query->set('ignore_sticky_posts', false);

        // (bool) Default is true - Post information cache (optional).
        $query->set('cache_results', false);        

        // (bool) Default is true - Post meta information cache (optional).
        $query->set('update_post_term_cache', false);

        // (bool) Default is true - Post term information cache (optional).
        $query->set('update_post_meta_cache', false);
        
    }, 20 );
}, 20 );

希望我能帮到你。

相关问题