wordpress纯代码实现计算距开始和结束的天数
方法一:php纯代码实现计算距开始和结束的天数
下面是一个PHP脚本示例,用于计算距离展会开始和结束的天数,以及判断展会是否已经结束。此脚本假定你已经有了展会的开始日期和结束日期。
把代码放到显示的位置。
<?php //wordpress纯代码实现计算距开始和结束的天数
// 展会开始和结束的日期
$startDate = '2023-10-01'; // 开始日期 可以改成自定义字段例:$startDate = get_post_meta(get_the_ID(), 'Exhibition_start_time', true); // 字段名:Exhibition_start_time
$endDate = '2023-10-07'; //结束日期 $endDate = get_post_meta(get_the_ID(), 'exhibition_end_time', true); // 字段名:exhibition_end_time
// 当前日期
$currentDate = date('Y-m-d');
// 计算距离开始的天数
$startDiff = strtotime($startDate) - strtotime($currentDate);
$daysToStart = ceil($startDiff / (60 * 60 * 24));
// 计算距离结束的天数
$endDiff = strtotime($endDate) - strtotime($currentDate);
$daysToEnd = ceil($endDiff / (60 * 60 * 24));
// 判断展会状态
if ($daysToStart > 0) {
echo "距离展会开始还有 {$daysToStart} 天。";
} elseif ($daysToEnd >= 0) {
echo "展会正在进行中,距离展会结束还有 {$daysToEnd} 天。";
} else {
echo "展会已结束。";
}
?>
在这个脚本中,我们首先定义了展会的开始日期和结束日期。然后,我们使用date()
函数获取当前日期,并使用strtotime()
函数将日期转换为时间戳。通过计算时间戳之间的差异,我们可以得到距离展会开始和结束的天数。最后,我们使用条件语句来判断展会的状态,并输出相应的信息。

方法二:wordpress纯代码实现计算距开始和结束的天数时间
我们可以在PHP脚本中加入具体的时间来计算距离展会开始和结束的时间(包括天数、小时、分钟和秒)。以下是一个更新后的脚本:
<?php //wordpress纯代码实现计算距开始和结束的天数时间
// 展会开始和结束的日期时间
$startDate = get_post_meta(get_the_ID(), 'Exhibition_start_time', true);; // 开始日期 可以改成自定义字段例:$startDate = get_post_meta(get_the_ID(), 'Exhibition_start_time', true); // 字段名:Exhibition_start_time
$endDate = get_post_meta(get_the_ID(), 'exhibition_end_time', true); //结束日期 可以改成自定义字段例:$endDate = get_post_meta(get_the_ID(), 'exhibition_end_time', true); // 字段名:exhibition_end_time
// 当前日期时间
$currentDate = date('Y-m-d H:i:s');
// 计算距离开始的时间差
$startDiff = strtotime($startDate) - strtotime($currentDate);
$daysToStart = floor($startDiff / (60 * 60 * 24));
$hoursToStart = floor(($startDiff % (60 * 60 * 24)) / (60 * 60));
$minutesToStart = floor(($startDiff % (60 * 60)) / 60);
$secondsToStart = $startDiff % 60;
// 计算距离结束的时间差
$endDiff = strtotime($endDate) - strtotime($currentDate);
$daysToEnd = floor($endDiff / (60 * 60 * 24));
$hoursToEnd = floor(($endDiff % (60 * 60 * 24)) / (60 * 60));
$minutesToEnd = floor(($endDiff % (60 * 60)) / 60);
$secondsToEnd = $endDiff % 60;
// 判断展会状态
if ($daysToStart > 0 || $hoursToStart > 0 || $minutesToStart > 0 || $secondsToStart > 0) {
echo "距离展会开始还有 {$daysToStart} 天 {$hoursToStart} 小时 {$minutesToStart} 分钟 {$secondsToStart} 秒。";
} elseif ($daysToEnd >= 0 || $hoursToEnd >= 0 || $minutesToEnd >= 0 || $secondsToEnd >= 0) {
echo "展会正在进行中,距离展会结束还有 {$daysToEnd} 天 {$hoursToEnd} 小时 {$minutesToEnd} 分钟 {$secondsToEnd} 秒。";
} else {
echo "展会已结束。";
}
?>
在这个脚本中,我们使用了floor()
函数来确保天数、小时、分钟和秒都是整数。我们还使用了模运算符(%
)来计算剩余的小时、分钟和秒。现在,脚本将输出距离展会开始和结束的具体时间,包括天数、小时、分钟和秒。如果展会已经结束,它将输出“展会已结束”。

方法三:wordpress纯代码实现计算距开始和结束的天数时间(先判断日期时间是否已经填写)
先判断展会开始和结束的日期时间是否已经被填写
<?PHP
// 展会开始和结束的日期时间
$startDate = get_post_meta(get_the_ID(), 'Exhibition_start_time', true);
$endDate = get_post_meta(get_the_ID(), 'Exhibition_end_time', true);
// 检查展会开始和结束的日期时间是否填写
if (empty($startDate) || empty($endDate)) {
// 如果任一日期为空,则输出提示信息
echo "展会开始或结束日期时间未填写,请检查并补充。";
} else {
// 如果日期时间都已填写,则继续执行其他逻辑
// 当前日期时间
$currentDate = date('Y-m-d H:i:s');
// 计算距离开始的时间差
$startDiff = strtotime($startDate) - strtotime($currentDate);
$daysToStart = floor($startDiff / (60 * 60 * 24));
$hoursToStart = floor(($startDiff % (60 * 60 * 24)) / (60 * 60));
$minutesToStart = floor(($startDiff % (60 * 60)) / 60);
$secondsToStart = $startDiff % 60;
// 计算距离结束的时间差
$endDiff = strtotime($endDate) - strtotime($currentDate);
$daysToEnd = floor($endDiff / (60 * 60 * 24));
$hoursToEnd = floor(($endDiff % (60 * 60 * 24)) / (60 * 60));
$minutesToEnd = floor(($endDiff % (60 * 60)) / 60);
$secondsToEnd = $endDiff % 60;
// 判断展会状态
if ($startDiff > 0) {
// 展会还未开始
echo "距离展会开始还有 {$daysToStart} 天 {$hoursToStart} 小时 {$minutesToStart} 分钟 {$secondsToStart} 秒。";
} elseif ($endDiff >= 0) {
// 展会正在进行中
echo "展会正在进行中,距离展会结束还有 {$daysToEnd} 天 {$hoursToEnd} 小时 {$minutesToEnd} 分钟 {$secondsToEnd} 秒。";
} else {
// 展会已结束
echo "展会已结束。";
}
}
?>

下面要WordPress添加二个自定义日期和时间字段匹配WordPress默认格式
需要在主题的functions.php
文件中添加以下代码:
/** WordPress添加二个自定义日期和时间字段匹配WordPress默认格式 **/
// 添加自定义日期和时间元框
function add_Exhibition_start_time_meta_box() {
add_meta_box(
'Exhibition_start_time_meta_box',
'自定义日期和时间',
'render_Exhibition_start_time_meta_box',
'post',
'normal',
'high'
);
}
add_action('add_meta_boxes', 'add_Exhibition_start_time_meta_box');
// 渲染自定义日期和时间元框的内容
function render_Exhibition_start_time_meta_box($post) {
wp_nonce_field(basename(__FILE__), 'Exhibition_start_time_nonce');
$Exhibition_start_time = get_post_meta($post->ID, 'Exhibition_start_time', true);
$exhibition_end_time = get_post_meta($post->ID, 'exhibition_end_time', true);
// 格式化日期和时间以匹配WordPress默认格式
$Exhibition_start_time_formatted = $Exhibition_start_time ? date('Y-m-d H:i:s', strtotime($Exhibition_start_time)) : '';
$exhibition_end_time_formatted = $exhibition_end_time ? date('Y-m-d H:i:s', strtotime($exhibition_end_time)) : '';
echo '<label for="Exhibition_start_time">开展开始日期和时间:</label>';
echo '<input type="datetime-local" id="Exhibition_start_time" name="Exhibition_start_time" value="' . esc_attr($Exhibition_start_time_formatted) . '" />';
echo '<label for="exhibition_end_time">展览结束日期和时间:</label>';
echo '<input type="datetime-local" id="exhibition_end_time" name="exhibition_end_time" value="' . esc_attr($exhibition_end_time_formatted) . '" />';
}
// 保存自定义日期和时间元框的数据
function save_Exhibition_start_time_meta_box_data($post_id) {
if (!current_user_can('edit_post', $post_id)) {
return;
}
if (!isset($_POST['Exhibition_start_time_nonce']) || !wp_verify_nonce($_POST['Exhibition_start_time_nonce'], basename(__FILE__))) {
return;
}
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if (isset($_POST['Exhibition_start_time'])) {
$Exhibition_start_time = sanitize_text_field($_POST['Exhibition_start_time']);
// 这里不需要再次格式化,因为我们已经从表单中接收了格式化的日期时间
update_post_meta($post_id, 'Exhibition_start_time', $Exhibition_start_time);
}
if (isset($_POST['exhibition_end_time'])) {
$exhibition_end_time = sanitize_text_field($_POST['exhibition_end_time']);
// 这里同样不需要再次格式化
update_post_meta($post_id, 'exhibition_end_time', $exhibition_end_time);
}
}
add_action('save_post', 'save_Exhibition_start_time_meta_box_data');
