我正在使用自定義帖子類型在我的網站上顯示事件。 該事件有兩個自定義字段的開始和結束日期。日期以以下格式存儲:YYYY-MM-DD。WordPress:使用自定義字段的日期來刪除帖子
我正在使用該字段對前端中的事件進行排序,我將根據當前日期從下一個事件開始。
在此日期之後,事件不再顯示在前端,因爲它們位於過去。
現在我想刪除結束日期後的事件。 有沒有辦法做到這一點?
我發現從@彼得 - 古森一個很好的解決方案的天數後刪帖:https://wordpress.stackexchange.com/questions/209046/delete-expired-posts-after-a-number-of-days-after-they-expired
但我不知道如何使用此功能和元場。
任何想法/提示?
我的代碼:
function expirePastEvents() {
$current_date_query = date ('Y-m-d');
$postType = 'event'; // Change this to your post type name.
$metaKeyName = 'gid_22'; // Change this to your meta key name for end date.
$skipTrash = false; // Whether or not to skip the trash.
$posts = new WP_Query([
'post_type' => $postType,
'fields' => 'ids',
'post_status' => 'publish',
'meta_query' => [
[
'key' => $metaKeyName,
//'value' => current_time('timestamp'),
'value' => $current_date_query,
'compare' => '<='
]
]
]);
foreach ($posts->posts as $post) {
wp_delete_post($post->ID, $skipTrash);
}
}
// expired_post_delete hook fires when the Cron is executed
add_action('expired_post_delete', 'expirePastEvents');
// Add function to register event to wp
add_action('wp', 'register_daily_events_delete_event');
function register_daily_events_delete_event() {
// Make sure this event hasn't been scheduled
if(!wp_next_scheduled('expired_post_delete')) {
// Schedule the event
wp_schedule_event(time(), 'hourly', 'expired_post_delete');
}
}
你可以簡單地創建一個cronjob來爲你做。 –
是的,但我沒有這個功能,只能刪除在元字段中具有特定日期的帖子:( – Cray
您提供的鏈接實際上向您顯示*完全*如何在元字段中執行此操作... – naththedeveloper