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

By

Traian

Wordpress

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!

 

 

 

 

 

 

 

 

Etichete

 

Leave a Reply

Adresa ta de email nu va fi publicată.