Proiecte web

Restructurare categorii website

By

Traian

Wordpress

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

 

 

 

 

Leave a Reply

Adresa ta de email nu va fi publicatńÉ.

*