You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按自定义日期字段排序WordPress文章求助

解决WordPress按d/m/Y格式自定义日期字段排序文章的问题

你的核心问题是data_evento字段是d/m/Y字符串格式,直接按字符串排序会导致日期逻辑错误,必须先将其转换为MySQL可识别的标准日期格式再排序。以下是两种可行方案:

方案一:通过钩子修改主查询(推荐,无需改动模板循环)

在主题的functions.php文件中添加以下代码,它会自动修改首页的主查询排序逻辑:

function custom_sort_by_data_evento( $query ) {
    // 仅对前台主查询生效,避免影响后台或其他自定义查询
    if ( $query->is_main_query() && ! is_admin() && is_home() ) {
        $query->set( 'meta_key', 'data_evento' );
        $query->set( 'meta_query', array(
            array(
                'key' => 'data_evento',
                'compare' => 'EXISTS',
            )
        ));
        // 过滤排序规则,将d/m/Y字符串转成标准日期后倒序
        add_filter( 'posts_orderby', 'custom_orderby_data_evento' );
    }
}
add_action( 'pre_get_posts', 'custom_sort_by_data_evento' );

function custom_orderby_data_evento( $orderby ) {
    global $wpdb;
    return "STR_TO_DATE({$wpdb->postmeta}.meta_value, '%d/%m/%Y') DESC";
}

添加后,你原来的模板循环代码不需要做任何改动,即可实现按data_evento从新到旧排序。

方案二:在模板中自定义查询(适合仅修改当前页面)

如果你只需要在这个特定模板页面修改排序,可以直接替换原循环代码为以下内容:

<?php
$args = array(
    'post_type' => get_post_type(), // 自动匹配当前文章类型
    'meta_key' => 'data_evento',
    'meta_query' => array(
        array(
            'key' => 'data_evento',
            'compare' => 'EXISTS',
        )
    ),
);

$custom_query = new WP_Query( $args );

// 注入日期转换排序逻辑
add_filter( 'posts_orderby', function( $orderby ) use ( $wpdb ) {
    return "STR_TO_DATE({$wpdb->postmeta}.meta_value, '%d/%m/%Y') DESC";
} );

if ( $custom_query->have_posts() ) :
    while ( $custom_query->have_posts() ) : $custom_query->the_post();
?>
    <div class="col">
        <?php get_template_part( 'template-parts/content-home', get_post_type() ); ?>
    </div>
<?php
    endwhile;
    wp_reset_postdata(); // 重置查询上下文,避免后续代码出错
else :
    echo '<p>暂无相关文章</p>';
endif;
?>

关键说明

  • 必须使用STR_TO_DATE函数将d/m/Y格式的字符串转换为MySQL标准日期格式,否则字符串排序会出现逻辑错误(比如10/01/2024会被认为比09/12/2024新)。
  • 两种方案都添加了meta_query确保只查询存在data_evento字段的文章,你可以根据需求移除这个条件。

内容的提问来源于stack exchange,提问作者Riccardo Vescovo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 23:25:18