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?
AlexPTY
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
AlexPTY
Come @AlexPTY, questo codice deve essere simile all'aggiornamento in blocco. Non ha alcun effetto.
Michael Rogers
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
AlexPTY
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()
) );
Maxim Sarandi
Ho modificato il mio post. Ho testato le mie soluzioni sul mio sito. Tutto funziona correttamente
Maxim Sarandi
ancora non funziona, solo il pulsante "aggiorna" nella modifica del post fa il trucco. Immagino di dover modificare tutti gli 810 post. Grazie comunque
AlexPTY
Quale trucco? Come funziona il trucco? Con l'hook save_post? Modificare manualmente..è molto lungo ))
Maxim Sarandi