我已经回答了这类问题here 但您要删除post_meta
也这是您的代码。请在上测试此localhost
第一
<?php
// Please use this function carefully.
// Changes can\'t undone. Best regards from Serkan Algur :)
// Let the function begin
function delete_oldest_posts_salgur()
{
// We will collect posts from two years ago :)
$args = array(
\'date_query\' => array(
array(
\'column\' => \'post_date_gmt\',
\'before\' => \'2 years ago\', // change this definition for your needs
),
),
\'posts_per_page\' => -1,
);
// Get posts via WP_Query
$query = new WP_Query($args);
//We are doing this for \'foreach\'
$posts = $query->get_posts();
foreach ($posts as $post) {
echo $post->ID;
$args = array(
\'posts_per_page\' => -1,
\'order\' => \'ASC\',
\'post_mime_type\' => \'image\', // only for images. Look at https://codex.wordpress.org/Function_Reference/get_children
\'post_parent\' => $post->ID,
\'post_type\' => \'attachment\',
);
$attachments = get_children($args);
$post_metas = get_post_meta($post->ID); // Get all post metas
if ($post_metas) {
foreach ($post_metas as $key => $pmeta) { //delte all of them
delete_post_meta($post->ID, $key);
}
}
if ($attachments) {
foreach ($attachments as $attachment) {
wp_delete_attachment($attachment->ID, true); //If You Want to trash post set true to false
}
}
wp_delete_post($post->ID, true); //If You Want to trash post set true to false
}
}
// Problem Solver Cron Job definition
function cron_delete_oldest_posts_salgur()
{
if (! wp_next_scheduled(\'delete_oldest_posts_salgur\')) {
wp_schedule_event(current_time(\'timestamp\'), \'daily\', \'delete_oldest_posts_salgur\');
}
}
add_action(\'wp\', \'cron_delete_oldest_posts_salgur\');