Acasă » Blog » Restructurare categorii website

Restructurare categorii website

Salut,

Sarcina: restructurare categorii site web starjunior.ro. Simplificare, eliminare, comasare categorii.

Analiza: practic, fiind foarte multe articole (~1500) solutia este evident una automata.

  • Ar trebui creat un tabel de corespondenta categorii vechi – categorii noi, astfel incat sa stim ce categorii noi atasam la articolele din categoriile vechi.
  • Cream categoriile noi.
  • Apoi rulam  un script de serviciu care care face automat aceste atribuiri.
  • Verificam in admin ca atribuiriel s-au facut asa cum am intentionat (lista articole si filtrare dupa categorii vechi si/sau noi).
  • Stergem categoriile vechi. That’s it!

Solutia tehnica: scriptul care ataseaza categoriile noi la articolele existente in vechile categorii:

$cat_old = 20; // categoria veche
$cat_new = 2231; // categoria noua
function tcp_atasez_categorie_noua_la_articolele_categoriei_vechi($cat_old, $cat_new){
$args = array();
$args['cat'] = $cat_old;
$args['posts_per_page'] = -1;
// obtinem setul de articole care au atasata categoria veche
$set_articole = new WP_Query($args);
while ($set_articole->have_posts()):
$set_articole->the_post();
$post_id = get_the_ID();
// ataseaza categoria noua $cat_new la articolul cu ID-ul $post_id
// ultimul parametru $apend de valoare true indica functiei
// sa ataseze categoria si sa pastreze vechile categorii atasate la articol
// (o valoare false practic stergea vechile asocieri categorii-articol si crea o singura asociere cu categoria noua $cat_new)
wp_set_object_terms( $post_id, $cat_new, 'category', true);
endwhile;
wp_reset_query();
}

Alte detalii:

  • cream o categorie de lucru pe care o putem denumi activitati-de-culise ( 🙂 )
  • cream un fisier .php in directorul temei curente: category-activitati-de-culise.php.
  • Aici apelam get_header();
  • Apelam functia
  • tcp_atasez_categorie_noua_la_articolele_categoriei_vechi($cat_old, $cat_new);
  • Inlocuim manual $cat_old si $cat_new conform tabelului de corespondenta creat.
  • Reapelam functia la fiecare noua pereche $cat_old – $cat_new

Refactor: Automatizarea actualizarii pereche $cat_old – $cat_new:

  • Cream un vector cu cheile categorii vechi si valorile categorii noi
  • Parcurgem vectorul si apelam tcp_atasez_categorie_noua_la_articolele_categoriei_vechi($cat_old, $cat_new)  la fiecare iteratie.

 

Sper ca va fi utila prezentarea  acestui program backend.

Daca nu ati vizitat pana acum Star Junior faceti treaba asta acum: in urma aplicarii restructurarii mai sunt ~ 6-7 categorii (nu au subcategorii)

Merci pentru lectura!

Traian Predan

 

 

 

Lasă un răspuns

Adresa ta de email nu va fi publicată.

nv-author-image

Traian Constantin Predan

Inginer absolvent al Politehnicii București proiectează și construiește sisteme online. Lucrează proiecte extrem de diverse, îi plac viziunile noi care provoacă la dezvoltarea unor soluții tehnice eficiente și stabile.