Come forzare l'aggiornamento di tutti i post dopo l'importazione

20 feb 2018, 10:31:34
Visualizzazioni: 25.7K
Voti: 2

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

4
Commenti

Piccolo suggerimento, l'interfaccia utente ha anche un'azione in blocco per aggiornare tutti i post. Dovresti modificare l'elenco di tutti i post, in alto a destra nelle opzioni dello schermo per il conteggio dei post. Dopo di ciò, usa l'azione in blocco per aggiornare tutti i post che sono elencati.

bueltge bueltge
20 feb 2018 11:05:24

Scusa, non sono un programmatore... se intendi l'azione in blocco nella schermata di amministrazione, non funziona. L'unica cosa che funziona per me è andare su ogni post e premere il pulsante "aggiorna".

AlexPTY AlexPTY
20 feb 2018 11:14:52

Sì, è pensato per gli utenti senza conoscenze di programmazione. Vai su wp-admin/edit.php e seleziona l'opzione modifica nelle azioni in blocco, seleziona anche tutti i post e clicca Applica. Ora il primo post selezionato apre la vista di modifica rapida e puoi cambiare i dati, che verranno aggiornati in tutti i post selezionati dopo l'aggiornamento.

bueltge bueltge
20 feb 2018 11:35:57

come ho detto, non funziona dall'azione in blocco, solo il pulsante "aggiorna" di ogni singolo post funziona

AlexPTY AlexPTY
20 feb 2018 11:50:04
Tutte le risposte alla domanda 3
5

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:

  1. Nella dashboard di amministrazione, seleziona la vista con tutti i post del tuo tipo personalizzato
  2. 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
  3. Clicca la freccia verso il basso accanto a 'Azioni di gruppo' e seleziona modifica
  4. Premi 'Applica' - apparirà una schermata con una selezione di modifiche che puoi apportare
  5. Fai qualche modifica, come aggiungere un tag o cambiare autore (qualsiasi cosa)
  6. 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.

20 feb 2018 11:31:33
Commenti

Oppure usa -1 per tutti i post invece del 1000 in questo esempio.

bueltge bueltge
20 feb 2018 13:20:13

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 AlexPTY
20 feb 2018 13:38:11

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 AlexPTY
20 feb 2018 14:44:42

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

Michael Rogers Michael Rogers
27 mar 2020 21:51:28

puoi rimuovere la riga $mypost->post_title = $mypost->post_title.'';. Inoltre, se usi wp_insert_post( $mypost ); è leggermente più veloce. (non inserirà un nuovo post perché l'ID è lo stesso)

Jules Jules
24 dic 2020 14:27:46
9

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();
} );
20 feb 2018 11:58:42
Commenti

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

AlexPTY AlexPTY
20 feb 2018 13:31:58

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 Maxim Sarandi
20 feb 2018 13:33:37

scusa, non sono un programmatore. Posso solo copiare/incollare ;)

AlexPTY AlexPTY
20 feb 2018 13:48:45

Ho modificato il mio post.

Maxim Sarandi Maxim Sarandi
20 feb 2018 13:50:40

scusa, ma al refresh cancella semplicemente il contenuto del post.

AlexPTY AlexPTY
20 feb 2018 13:56:00

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

Maxim Sarandi Maxim Sarandi
20 feb 2018 14:01:26

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 AlexPTY
20 feb 2018 14:12:41

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

Maxim Sarandi Maxim Sarandi
20 feb 2018 14:15:18

Forse devi aggiungere global $post prima di wp_update_post( $post );, probabilmente la mancanza di questo è il motivo per cui il contenuto del post viene cancellato durante l'aggiornamento?

Iurie Iurie
30 ott 2022 01:18:22
Mostra i restanti 4 commenti
1
-1

Per chiunque possa essere interessato in futuro: per aggiornare in massa i post uno per uno, puoi utilizzare l'estensione Web Scrapper per Chrome che automatizzerà i clic sul pulsante di aggiornamento per ogni post.

6 mar 2020 12:30:13
Commenti

come hai fatto a farlo funzionare? Sto provando a usarlo ma niente funziona come dovrebbe

moeses moeses
4 feb 2021 18:07:18