如何根据帖子的自定义字段设置和更新the_date

时间:2015-09-23 作者:Pete

如何设置和更新the_date 根据帖子的自定义字段?

我有一个自定义字段“日期-时间”,格式如下yyyy-mm-dd-hh:mm

e、 g.2015-09-30 08:12

我希望这个日期能超过正常发布和更新的日期和时间。

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

通常,您会编写一个函数,该函数由save_post 挂钩和使用wp_update_post 更新帖子。问题是,当你打电话的时候wp_update_post 它调用save_post, 这将导致无限循环。

为了解决这个问题,我们将在调用之前先解开函数的挂钩wp_update_post, 然后再勾上。

我还没有尝试过这个,但它应该会起作用:

function change_post_date( $post_id, $post ) {

    // WordPress calls "save_post" when a post is saved, updated, autosaved,
    // revision created, or ajax called. We only want to execute this function
    // during post save and update. The next 3 "if" statements check to see why
    // save_post was called...

    // Autosave? Do nothing
    if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE )
        return;
    // AJAX? Do nothing
    if ( defined( \'DOING_AJAX\' ) && DOING_AJAX )
        return;
    // Post revision? Do nothing
    if ( false !== wp_is_post_revision( $post_id ) )
        return;

    // Make sure the person editing the post has permission to do so
    if ( ! current_user_can( \'edit_post\', $post_id ) )
        return;

    // Get the "date-time" field
    $date_time_field = get_post_meta($post_id, \'date-time\', true);

    // Unhook
    remove_action(\'save_post\', \'change_post_date\', 10);

    $args = array (
        \'ID\' => $post_id,
        \'post_date\' => $date_time_field,
        \'post_date_gmt\' => gmdate(\'Y-m-d H:i\', $date_time_field )
    );

    wp_update_post( $args );

    // Re-hook
    add_action(\'save_post\', \'change_post_date\', 10);

}
add_filter(\'save_post\', \'change_post_date\', 10, 2);

相关推荐

“UPDATE_POST_META”是否在更新前检查值是否相同?

运行以下代码时:update_post_meta( 1, \'_visibility\', \'visible\' ); wordpress是否检查post\\u id1 钥匙_visable 值为visible 在写入数据库之前?我有一个导入脚本,我想知道这是否可以节省处理时间。function update_post_meta_check($post_id, $key, $value) { $old = get_post_meta($post_id, $key);&