Buna,
Este vorba de un script de serviciu – viitor plugin ? – care seteaza anumite categorii unui articol in functie de setul de tag-uri pe care acesta le are deja setate.
Date de intrare:
- articol
- tag-uri articol
- tabel corespondenta categorie <-> tag-uri corespunzatoare
Cerinta:
Asignarea articolului la categoriile corespondente seturilor de tag-uri pe care acesta le are.
Rezolvare:
1. Tinem corespondenta tag-uri < – > categorie sub forma unui vector bidimensional (cheile sunt categorii, valorile sunt vectori cu tag-urile corespunzatoare):
$categ_tags = array(cat_id => array(tag1, tag2, tag3, ...))
2. Parcurgem vectorul $categs_tags si pentru fiecare categorie parcurgem vectorul de tag-uri.
foreach($categs_tags as $cat_id => $tags){foreach($tags => $tag){
$args = array();
$args[‘cat’] = ”;
$args[‘tag’] = $tag;
$args[‘posts_per_page’] = -1;
query_posts($args);
if (have_posts()){
//parcurg set articole
while(have_posts()): the_post();
//obtin categoriile la care este deja asignat articolul (id-uri)
$categorii = array();
$categorii = get_the_category();
$categ_ids = array();
foreach($categorii as $categ){
$categ_ids[] = $categ->term_id;
}
//daca articolul nu este asignat deja la categoria corespondenta
if (!in_array($cat_id, $categ_ids)){
//adaug categoria in vectorul categoriilor articolului
$categ_ids[] = $cat_id;
}
//setez categoriile articolului
wp_set_post_categories( get_the_ID(), $categ_ids );
endwhile;
}
wp_reset_query();
}
}
}
3. Ca sa ne miscam repede: creez o categorie de serviciu in WordPress admin: Serviciu (cu url /serviciu)
4. creez un script category-serviciu.php in care inlocuiesc bucla (get_template_part(‘loop’);) cu functia creata de noi:
setez_categorii_articole($categs_tags);
5…. nu mai este 5, este GATA!
Care e parerea voastra despre aceasta solutie?
Observatie: poate fi usor transformat intr-un plugin care realizeaza aceasta sarcina de serviciu in admin.
Astept comentariile, solutiile alternative, imbunatatiri, critici.
Multumesc pentru atentie si s-aveti o zi buna pentru programare!
Află detalii privind realizarea site-urilor pe WordPress
Creare site WordPress
Sau ia legatura cu noi aici