/**
* Plugin Name: Force Post Update by Date (CLI)
* Description: Força a atualização de todos os posts de um determinado tipo criados antes de 2017 via WP-CLI.
* Version: 1.2
* Author: Seu Nome
*/
// Verifique se WP-CLI está disponível
if ( defined('WP_CLI') && WP_CLI ) {
/**
* Classe customizada para o comando WP-CLI
*/
class Force_Post_Update_CLI {
/**
* Executa o comando para atualizar os posts
*
* ## EXEMPLO:
* wp force-update-posts
*
* @when after_wp_load
*/
public function __invoke() {
// Defina o tipo de conteúdo (post type) que você quer atualizar
$post_type = 'filmes'; // Substitua por 'custom_post_type' se necessário
// Defina a data antes da qual os posts serão atualizados (antes de 1º de janeiro de 2017)
$date_query = array(
'before' => '2017-01-01', // Defina a data correta
'inclusive' => false, // Excluir 1º de janeiro de 2017
);
// Consulta os posts do tipo definido e criados antes de 2017
$query_posts = new WP_Query( array(
'post_type' => $post_type,
'date_query' => array( $date_query ),
'nopaging' => true, // Carregar todos os posts sem paginação
) );
// Verifique se existem posts antes de continuar
if ( ! $query_posts->have_posts() ) {
WP_CLI::warning( "Nenhum post encontrado antes de 2017." );
return;
}
// Contador para verificar quantos posts foram atualizados
$updated_count = 0;
// Loop através dos posts e força o update alterando status para 'draft' e depois 'publish'
while ( $query_posts->have_posts() ) :
$query_posts->the_post();
// Muda o status para 'draft'
$post_draft = array(
'ID' => get_the_ID(),
'post_status' => 'draft',
);
wp_update_post( $post_draft );
// Muda o status de volta para 'publish'
$post_publish = array(
'ID' => get_the_ID(),
'post_status' => 'publish',
);
wp_update_post( $post_publish );
$updated_count++;
endwhile;
// Reseta os dados do post após a execução
wp_reset_postdata();
// Retorna o resultado para o terminal
WP_CLI::success( "$updated_count posts foram atualizados antes de 2017." );
}
}
// Registra o comando 'wp force-update-posts'
WP_CLI::add_command( 'force-update-posts', 'Force_Post_Update_CLI' );
}