WordPress添加一个自定义日期和时间字段带格式

把以下代码放到主题的 functions.php 文件中

/** WordPress添加一个自定义日期和时间字段带格式 **/ 
// 添加自定义日期和时间元框
function add_custom_datetime_meta_box() {
    add_meta_box(
        'custom_datetime_meta_box',
        '自定义日期和时间',
        'render_custom_datetime_meta_box',
        'post',
        'normal',
        'high'
    );
}
add_action('add_meta_boxes', 'add_custom_datetime_meta_box');

// 渲染自定义日期和时间元框的内容
function render_custom_datetime_meta_box($post) {
    wp_nonce_field(basename(__FILE__), 'custom_datetime_nonce');
    $custom_datetime = get_post_meta($post->ID, 'custom_datetime', true);
    echo '<label for="custom_datetime">自定义日期和时间:</label>';
    echo '<input type="datetime-local" id="custom_datetime" name="custom_datetime" value="' . esc_attr($custom_datetime) . '" />';
}

// 保存自定义日期和时间元框的数据
function save_custom_datetime_meta_box_data($post_id) {
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }
    if (!isset($_POST['custom_datetime_nonce']) || !wp_verify_nonce($_POST['custom_datetime_nonce'], basename(__FILE__))) {
        return;
    }
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
    if (isset($_POST['custom_datetime'])) {
        $custom_datetime = sanitize_text_field($_POST['custom_datetime']);
        update_post_meta($post_id, 'custom_datetime', $custom_datetime);
    }
}
add_action('save_post', 'save_custom_datetime_meta_box_data');

可以把以下代码放在你想要显示的地方,这可能是index.php,‌single.php,‌page.php等,‌取决于你想要在哪里显示这个日期。‌

<?php
// 获取当前文章的ID
global $post;
$post_id = $post->ID;

// 获取自定义字段Exhibition_time的值
$exhibition_time = get_post_meta($post_id, 'custom_datetime', true); // 字段名:custom_datetime

// 检查是否设置了Exhibition_time字段
if (!empty($exhibition_time)) {
    // 直接输出或进行格式化后输出
    // 注意:如果Exhibition_time已经是正确的日期时间格式,可以直接echo
    // echo '展览时间: ' . $exhibition_time;

    // 如果你想要以特定格式显示日期时间,可以使用DateTime类
    $datetime = new DateTime($exhibition_time);
    echo '展览时间: ' . $datetime->format('Y年m月d日 H:i:s');
} else {
    echo '未设置展览时间';
}
?>