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!
Află detalii privind realizarea site-urilor pe WordPress
Creare site WordPress
Sau ia legatura cu noi aici