Cum să forțezi actualizarea tuturor articolelor după import
Recent am importat un număr mare de articole personalizate în WordPress. Totul funcționează bine, cu excepția unei taxonomii care este importată, dar nu se afișează în frontend până când nu apăs butonul "actualizare" pentru fiecare articol. Am 810 articole și aceasta nu este o soluție...
Cred că ar trebui să existe o modalitate de a rula o comandă MySQL pentru a forța actualizarea tuturor articolelor fără a face modificări. Vă rog să mă ajutați cu comanda, am căutat plugin-uri și nu pot găsi nimic potrivit
Mulțumesc
Există 2 moduri în care poți face acest lucru. Primul și mai dificil este să scrii un program, celălalt este să faci o actualizare în masă. De ce să complici când metoda ușoară funcționează la fel de bine? Mai ales că aceasta este o cerință unică.
Metoda ușoară:
- În panoul de administrare, selectează vizualizarea cu toate articolele pentru tipul tău personalizat
- Selectează toate articolele (bifează-le) - Poți vedea mai multe articole făcând clic pe 'Opțiuni ecran' în dreapta sus a vizualizării și crescând numărul de elemente pe pagină
- Fă clic pe săgeata în jos de lângă 'Acțiuni în masă' și selectează editare
- Apasă 'Aplică' - vei obține un ecran cu o selecție de modificări pe care le poți face
- Fă o modificare, cum ar fi adăugarea unei etichete sau schimbarea autorului (orice)
- Apasă 'Actualizează'
Asta ar trebui să fie suficient.
Metoda 'dificilă':
În cazul în care cineva dorește să folosească soluția cu cod, poți adăuga codul de mai jos în fișierul functions.php din tema ta copil.
function my_update_posts() {
//$myposts = get_posts('showposts=-1');//Preia articolele țintă
$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' );
Ține minte să rulezi acest cod doar o dată și apoi să îl elimini sau să comentezi linia add_action, altfel va rula de fiecare dată când o pagină nouă este încărcată.
Am inclus această opțiune în cazul în care cineva dorește un model de bază pentru actualizarea tuturor titlurilor de articole sau a altor proprietăți în toate articolele.

Sau poți folosi -1
pentru toate articolele în loc de 1000 ca în acest exemplu.

Calea ușoară nu funcționează. Editarea rapidă nu funcționează cum am menționat mai devreme, doar editarea completă a articolului funcționează. Nu știu de ce, poate pentru că acest buton declanșează comanda "publică" în loc de "actualizează". Există vreo modalitate de a forța "publicarea" articolelor în loc de "actualizare"?

nu, nu funcționează. cred că voi edita manual toate articolele mâine, va dura câteva ore, dar deja am pierdut jumătate de zi căutând soluții. Mulțumesc tuturor

La fel ca @AlexPTY, acest cod trebuie să fie similar cu actualizarea în masă. Nu are niciun efect.

Primul pas: Obțineți toate articolele utilizând get_posts
sau WP_Query
.
$query_posts = new WP_Query( array(
'nopaging' => true,
) );
Al doilea pas: Faceți buclă pentru articole și utilizați wp_update_post()
pentru fiecare articol, setând parametrul ID.
while ( $query_posts->have_posts() ) :
$query_posts->the_post();
wp_update_post( array(
'ID' => get_the_ID(),
'post_content' => get_the_content(),
) );
endwhile;
Plasați acest cod în acțiunea init sau în header/footer. Actualizați pagina o dată și eliminați codul. Plasați acest cod în functions.php și toate articolele dvs. vor fi actualizate la reîncărcarea paginii.
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();
} );

Mulțumesc Maxim, dar acest cod a șters conținutul tuturor postărilor mele la reîmprospătare. Voi restaura totul și voi încerca altă soluție

setează conținutul din postarea curentă în post_content
în funcția wp_update_post().
wp_update_post( array(
'ID' => get_the_ID(),
'post_content' => get_the_content()
) );

Am editat postarea mea. Am testat soluțiile mele pe site-ul meu. Toate funcționează bine

încă nu funcționează, doar butonul de "actualizare" din editarea postării face treaba. Cred că va trebui să editez toate cele 810 postări. Oricum, mulțumesc

Ce truc? Cum funcționează trucul? Prin hook-ul save_post? Editarea manuală...drum foarte lung ))
