把以下代码放到主题的 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 '未设置展览时间';
}
?>