Jumătate de oră productivă

Jumătate de oră productivă

Hai să-ți zic cum mi-am petrecut ultima jumătate de oră, că e tare „amuzant”. Task-ul: trebuia să fac un export al tuturor atașamentelor dintr-o bază de date WP. În principiu, treaba asta e ușoară, e un banal JOIN:

mysql -u -p -e "USE wordpress_db; SELECT meta_value FROM wp_posts, wp_postmeta WHERE wp_posts.ID = wp_postmeta.post_id AND post_type = 'attachment' AND meta_key = '_wp_attached_file' AND post_mime_type LIKE '%image%' LIMIT 0" > images_list.txt

Treaba asta, teoretic, ar fi trebuit să-mi pună într-un fișier toate imaginile urcate în DB. Scopul: să curăț imaginile intermediare – acele imagini care sunt generate de WP la fiecare imagine urcată (lucrez pe o temă legacy care avea 23 de formate de imagine!).

În fine, testez, merge. Pe server? Nu merge. Dă-i, verifică și răsverifică, albește un pic, smulge puțin păr din cap… Ghici ce s-a întâmplat?

Ei bine… vezi acel LIMIT 0? Pentru că am un DB gigant (15k+ posturi), făceam teste doar pe primele 10 rezultate. Și în loc să șterg LIMIT 10, am șters doar o cifră, crezând, în naivitatea mea, că zero înseamnă că ia toate rezultatele.

Ei bine… Nu.

Nu ia toate rezultatele. 

Nu ia nici un rezultat, ca să fiu mai exact.

11 Comentarii

alex a scris

@Ionuț Staicu: Pluginul intai sterge tot si apoi le genereaza pe alea noi, in functie de ce add_image_size ai acum. Cat despre viteza regenerarii clar merge mai rapid cu wp-cli dar ca si functionalitate ar trebui sa faca ce vrei tu.

„Force Regenerate Thumbnails allows you to delete all old images size and REALLY regenerate the thumbnails for your image attachments.”

Malin a scris

Apropo de subiect, ai o idee cum as putea sa generez atasamente pornind de la featured image pentru vreo 10000 de postari/produse de WooCommerce?
Am un prieten care intai a adaugat imaginile in bulk folosind Media Uploader si abia apoi a creat produsele, deci are 99% din imagini fara atasament si asta ii cauzeaza probleme cand incearca sa le preia pe Okazii.

Ionuț Staicu a scris

@Malin: id-ul pentru featured image este ținut în meta _thumbnail_id al fiecărui post. Acel ID este id-ul atașamentului.

Ce aș face eu ar fi următoarea chestie:

1. Iau toate posturile care au thumb setat (WP_Query)
2. Setez părintele thumb-ului:

$media_post = wp_update_post( [
  'ID' => $thumbID
  'post_parent' => $postID
], true );

Acum, ai putea verifica să nu suprascrii părintele (e.g. aceeași imagine poate fi folosită la două posturi), dar astea sunt detalii :)

Adaugă un comentariurăspuns pentru

Link-urile în context sunt binevenite. Comentariile fără nume/email valid sunt șterse.
PS: Comentariul NU este editabil.

Site-ul blog.iamntz.com utilizează cookie-uri. Continuarea navigării presupune acceptarea lor. Mai multe informații.

windows apple dropbox facebook twitter