Come forzare l'aggiornamento di tutti i post dopo l'importazione
Ho recentemente importato un gran numero di post personalizzati in WordPress. Tutto funziona bene, tranne una tassonomia che viene importata ma non viene visualizzata nel front-end, fino a quando non clicco sul pulsante "aggiorna" di ogni post. Ho 810 post e questa non è una soluzione praticabile...
Penso che ci dovrebbe essere un modo per eseguire un comando MySQL per forzare l'aggiornamento di tutti i post senza apportare modifiche. Per favore aiutatemi con il comando, ho cercato dei plugin ma non ho trovato nulla di adatto
Grazie

Ci sono 2 modi per farlo. Il primo e più difficile è scrivere un programma, l'altro è fare un aggiornamento in blocco. Perché complicarsi la vita quando il modo semplice funziona altrettanto bene? Soprattutto considerando che si tratta di un'esigenza una tantum.
Il modo semplice:
- Nella dashboard di amministrazione, seleziona la vista con tutti i post del tuo tipo personalizzato
- Seleziona tutti i post (spuntandoli) - Puoi vedere più post cliccando su 'Opzioni schermo' in alto a destra della vista e aumentando il numero di elementi per pagina
- Clicca la freccia verso il basso accanto a 'Azioni di gruppo' e seleziona modifica
- Premi 'Applica' - apparirà una schermata con una selezione di modifiche che puoi apportare
- Fai qualche modifica, come aggiungere un tag o cambiare autore (qualsiasi cosa)
- Premi 'Aggiorna'
Questo dovrebbe bastare.
Il modo "difficile":
Nel caso qualcuno volesse usare la soluzione con codice, puoi aggiungere il codice qui sotto al file functions.php del tuo child theme.
function my_update_posts() {
//$myposts = get_posts('showposts=-1');//Recupera i post che vuoi modificare
$args = array(
'post_type' => 'post',
'numberposts' => -1
);
$myposts = get_posts($args);
foreach ($myposts as $mypost){
$mypost->post_title = $mypost->post_title.'';
wp_update_post( $mypost );
}
}
add_action( 'wp_loaded', 'my_update_posts' );
Ricorda di eseguire questo codice solo una volta e poi rimuoverlo o commentare la riga add_action altrimenti verrà eseguito ogni volta che viene caricata una nuova pagina.
Ho incluso questa opzione nel caso qualcuno volesse un modello di partenza per aggiornare tutti i titoli dei post o qualche altra proprietà in tutti i post.

La soluzione facile non funziona. La modifica rapida non funziona come ho detto prima, solo la modifica completa del post funziona. Non so perché, forse perché questo pulsante attiva il comando "pubblica" invece di "aggiorna". C'è un modo per forzare la pubblicazione dei post invece dell'aggiornamento?

no, non funziona. Penso che modificherò manualmente tutti i post domani, ci vorranno un paio d'ore, ma ho già passato mezza giornata a cercare soluzioni. Grazie a tutti

Come @AlexPTY, questo codice deve essere simile all'aggiornamento in blocco. Non ha alcun effetto.

Primo: Ottieni tutti i post utilizzando get_posts
o WP_Query
.
$query_posts = new WP_Query( array(
'nopaging' => true,
) );
Secondo: Esegui un loop per i post e usa wp_update_post()
per ogni post impostando il parametro ID.
while ( $query_posts->have_posts() ) :
$query_posts->the_post();
wp_update_post( array(
'ID' => get_the_ID(),
'post_content' => get_the_content(),
) );
endwhile;
Inserisci questo codice nell'azione init o nell'header/footer. Aggiorna la pagina una volta e rimuovi il codice. Inserisci questo codice in functions.php e tutti i tuoi post verranno aggiornati al ricaricamento della pagina.
add_action( 'init', function () {
$query_posts = new WP_Query( array(
'nopaging' => true,
) );
while ( $query_posts->have_posts() ) :
$query_posts->the_post();
wp_update_post( $post );
endwhile;
wp_reset_postdata();
} );

Grazie Maxim, ma questo codice ha cancellato il contenuto di tutti i miei post al refresh. Ripristinerò tutto e proverò altre soluzioni

imposta il contenuto del tuo post corrente in post_content
nella funzione wp_update_post().
wp_update_post( array(
'ID' => get_the_ID(),
'post_content' => get_the_content()
) );

Ho modificato il mio post. Ho testato le mie soluzioni sul mio sito. Tutto funziona correttamente

ancora non funziona, solo il pulsante "aggiorna" nella modifica del post fa il trucco. Immagino di dover modificare tutti gli 810 post. Grazie comunque

Quale trucco? Come funziona il trucco? Con l'hook save_post? Modificare manualmente..è molto lungo ))
