难以更改发布元值中的日期格式

时间:2014-01-29 作者:mantis

我有一个带有日期的自定义字段的自定义帖子类型。这些帖子稍后将按该自定义字段中的日期排序。不幸的是,我的日期格式不正确,已经有很多帖子的元值为dd-mm-yyyy。我发现,要将此值用作orderby(WPQuery),它必须是yyyy-mm-dd。因此我打算尝试:

$args = array(
            \'posts_per_page\' => -1, 
            \'post_type\'=> \'match_report\'
            );
            $wp_query = new WP_Query(); 

            $wp_query->query($args); 

if ( $wp_query->have_posts() ) :                

while ( $wp_query->have_posts() ) : $wp_query->the_post(); 

$matchdate = get_post_meta($post->ID, \'report_date\', true);         
$new_matchdate = strftime("%Y-%m-%d", $matchdate);          
update_post_meta($post->ID, \'report_date\', $new_matchdate); 

endwhile;

wp_reset_postdata();

endif; ?>
但我正在

Notice: A non well formed numeric value encountered in...
当我回音时$new_matchdate 我得到1970-01\\u 01,所以很明显我做得不对。任何帮助都将不胜感激。

1 个回复
最合适的回答,由SO网友:tfrommen 整理而成

哦,天哪。你在做一些奇怪的事情。:)

请这样尝试:

$args = array(
    \'posts_per_page\' => -1,
    \'post_type\'=> \'match_report\',
);
$query = new WP_Query($args);

if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();

        $matchdate = get_post_meta(get_the_ID(), \'report_date\', true);
        $new_matchdate = DateTime::createFromFormat(\'d-m-Y\', $matchdate);
        update_post_meta(get_the_ID(), \'report_date\', $new_matchdate->format(\'Y-m-d\'));
    }

    wp_reset_postdata();
}
// EDIT
如果您在以面向对象的方式进行操作时遇到问题,请尝试以下过程:

$args = array(
    \'posts_per_page\' => -1,
    \'post_type\'=> \'match_report\',
);
$query = new WP_Query($args);

if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();

        $matchdate = get_post_meta(get_the_ID(), \'report_date\', true);
        $new_matchdate = date_create_from_format(\'d-m-Y\', $matchdate);
        update_post_meta(get_the_ID(), \'report_date\', date_format($new_matchdate, \'Y-m-d\'));
    }

    wp_reset_postdata();
}

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在