Cum treci în WordPress un sit non-WordPress? (I)


În ultimii ani am trecut în WordPress o serie de situri scrise manual de mine (adică nu cu CMS-uri). Dacă începi un sit nou în WordPress e uşor, dar ce te faci când ai deja conţinut, strâns în ani buni? Dacă pentru CMS-uri sunt de regulă “convertoare” (gen Drupal->WordPress), dacă situl e scris de tine tot tu trebuie să scrii şi modulul de convertire. Din fericire WordPress pune la dispoziţie câteva instrumente (funcţii) foarte utile. Ele m-au ajutat de exemplu să trec anul trecut Lumea.Catholica.ro în WordPress. Desigur, m-a ajutat faptul că revista o aveam deja într-o bază de date MySQL. Tot ce mi-a rămas a fost să îmi folosesc cunoştinţele PHP ca să scriu modulul de import.

În cele ce urmează am să prezint câteva dintre funcţiile utile. În mod evident, acest articol este complet neinteresant pentru 99% din public. Singurii interesaţi sunt cei care se gândesc să treacă pe WordPress, dar recuperând conţinutul existent. Să vedem deci ce şi cum se face. În primul rând trebuie ţinut cont de “filosofia” WordPress, care are două noţiuni distincte: pagini şi articole. Paginile ar fi conţinutul static (ex: pagina Despre, Contact, Întrebări frecvente…), iar articolele sunt conţinutul care are legătură cu timpul. În cazul revistei Lumea Catholica, articolele revistei au devenit articolele WordPress; iar pagini am doar Arhiva, Cuprins şi Despre. Identificaţi deci ce înseamnă pagini şi ce înseamnă articole… apoi care sunt categoriile în care vor fi articolele (eu la vechea revistă nu aveam categorii, aşa că acestea le-am pus manual ulterior).

Preluarea articolelor

Pentru preluarea articolelor se foloseşte funcţia wp_insert_post. Această funcţie primeşte ca parametru un array asociativ în care definim (cel puţin) titlul, conţinutul, starea, autorul şi categoria articolului. Vedeţi mai jos un exemplu de cod. Evident, acest cod îl veţi adapta şi îl veţi pune într-o buclă ce parcurge tabela în care aveţi articolele ce el doriţi importate.

[PHP]$articol = array();
$articol[‘post_title’] = ‘Ana are mere’;
$articol[‘post_content’] = ‘E o propoziţie clasică.’;
$articol[‘post_status’] = ‘publish’;
$articol[‘post_author’] = 1;
$articol[‘post_category’] = array(3,5);
wp_insert_post($articol);[/PHP]

Dacă vreţi structura completă a array-ului, o aveţi în continuare:

[PHP]array(
‘ID’ => [ <post id> ] //Mai bine nu puneţi (dacă îl puneţi face update dacă găseşte ID-ul respectiv)
‘menu_order’ => [ <order> ] //La pagini are relevanţă, pentru ordinea lor
‘comment_status’ => [ ‘closed’ | ‘open’ ] // ‘closed’ dacă se doreşte să nu se poată comenta
‘ping_status’ => [ ‘closed’ | ‘open’ ] // ‘closed’ înseamnă fără pingbacks şi trackbacks
‘pinged’ => [ ? ] //Nedocumentat
‘post_author’ => [ <user ID> ] //ID-ul autorului (dacă e unul singur pe WP, va fi 1)
‘post_category’ => [ array(<category id>, <…>) ] //Vedeţi ce ID-uri au categoriile
‘post_content’ => [ <the text of the post> ] //Conţinutul articolul (sau al paginii, căci poate fi şi pagină)
‘post_date’ => [ Y-m-d H:i:s ] //Ora de publicare a articolului
‘post_date_gmt’ => [ Y-m-d H:i:s ] //Ora de publicare a articolului, GMT acum
‘post_excerpt’ => [ <an excerpt> ] //Dacă aveţi nevoie să indicaţi un <em>excerpt</em> special
‘post_name’ => [ <the name> ] // Slug-ul articolului (mai bine lăsaţi WP să îl stabilească)
‘post_parent’ => [ <post ID> ] //"Părinţii" noului material, dacă e cazul
‘post_password’ => [ … ] //Dacă doriţi protejarea cu parolă
‘post_status’ => [ ‘draft’ | ‘publish’ | ‘pending’ ] //Starea noului articol
‘post_title’ => [ <the title> ] //Titlul articolului
‘post_type’ => [ ‘post’ | ‘page’ ] //De aici alegeţi dacă publicaţi conţinutul ca pagină sau ca articol (implicit articol)
‘tags_input’ => [ ‘<tag>, <tag>, <…>’ ] //Taguri, dacă sunt
‘to_ping’ => [ ? ] //Nedocumentat
); [/PHP]

Să mai reţinem că dacă avem un articol şi dorim să actualizăm ceva la el (ex: ne-am dat seama că dorim ceva diferit, am refăcut categoriile sau mai ştiu eu ce) putem folosi (şi) wp_update_post.

În cazul meu, pentru Lumea Catholica am avut nevoie şi de câmpuri particularizate. Întreg blogul WordPress are un singur autor (tehnic vorbind), adică administratorul (eu). Dar acolo sunt articole scrise de multe persoane. Pentru a-mi simplifica situaţia am pus în câmpuri personalizate (custom fields) informaţii precum autorul, traducătorul, sursa, copyright-ul… Pentru aceasta am folosit add_post_meta. Cere trei parametri: ID-ul articolului, numele câmpului personalizat şi valoarea lui.

[PHP]add_post_meta(45, ‘Autor’, ‘Ion Popescu’);[/PHP]

În fine, când importaţi articole evident nu merge bine totul din prima. Trebuie să le ştergeţi şi să mai încercaţi o dată. Vă ajută funcţia wp_delete_post, care cere ca parametru ID-ul articolului. Puneţi şi al doilea parametru, pe true, ca să fie o ştergere adevărată, nu o mutare în coş (facilitatea trash introdusă în WP 2.9).

Mai departe într-un alt articol.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (1 evaluări, media: 5,00 din 5)
Loading...Loading...

1 comentariu

  1. Svall spune:

    Interesant! Ma bate si pe mine un gand sa imi incerc norocul cu el. Sper sa reusesc, daca nu… caut aici. Poate gasesc o solutie.


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *