Acasă » Blog » Setare categorii la articole care au un anumit set de tag-uri

Setare categorii la articole care au un anumit set de tag-uri

  • Wordpress
  • 2 min read
Share this post on social!

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.

function setez_categorii_articole($categs_tags){
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:

$categs_tags = ….. // aici trebuie creat tabelul de corespondenta
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!

 

 

 

 

 

 

 

 

Lasă un răspuns

Traian Constantin Predan

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.