Função para alterar o horário de um post type do WordPress em lote

Ivon Filho

Procurando desenvolvedor freelancer para seu projeto?

Código pode ser adicionado no functions.php. Nesse caso o código irá subtrair 3 horas do post type “documento”.  Na linha 6 você pode alterar o post type e na linha 18 o cálculo de alteração de datas.

// Função para ajustar as datas dos posts do tipo 'documento'
function adjust_all_document_dates($per_page = 1000, $page = 1) {
$offset = ($page - 1) * $per_page;

$args = array(
'post_type' => 'documento',
'posts_per_page' => $per_page,
'offset' => $offset,
);

$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
$post_id = get_the_ID();
$post_date = get_post_field('post_date', $post_id);
$adjusted_date = date('Y-m-d H:i:s', strtotime($post_date) - 3 * 3600); // Subtrai 3 horas

// Atualiza a data do post
wp_update_post(array(
'ID' => $post_id,
'post_date' => $adjusted_date,
'post_date_gmt' => get_gmt_from_date($adjusted_date),
));
}
wp_reset_postdata();
return true; // ainda tem mais posts para processar
} else {
return false; // não tem mais posts para processar
}
}

// Adiciona página de administração personalizada
add_action('admin_menu', 'my_custom_menu_page');
function my_custom_menu_page() {
add_menu_page(
'Ajustar datas',
'Ajustar datas',
'manage_options',
'adjust_dates',
'adjust_dates_admin_page'
);
}

// Conteúdo da página de administração
function adjust_dates_admin_page() {
echo '<h1>Ajustar datas dos Documentos</h1>';

$page = isset($_POST['page']) ? intval($_POST['page']) : 1;

if (isset($_POST['adjust_dates'])) {
if (adjust_all_document_dates(1000, $page)) {
$page++;
echo '<p>Lote processado. Clique novamente para processar mais.</p>';
} else {
echo '<p>Todos os posts foram processados.</p>';
}
}

echo '<form method="post">
<input type="hidden" name="page" value="' . $page . '">
<input type="submit" name="adjust_dates" value="Ajustar Datas">
</form>';
}
Rolar para cima