Skriven och publicerad av Karl Wångstedt den 22 April 2009

Kontrollera var den efterfrågade artikeln finns

Allt som oftast vill man kontrollera om den artikel som efterfrågas finns i en speciell artikelgrupp (category) eller undergrupp till densamma. För att göra det behöver man traversera metadata för artiklarna och göra en koll.

I det första exemplet gör vi fråga inuti loopen, och vi kontrollerar artikelgruppen »Webbteve« som har sökvägen (slug) »webbteve«. Distinktionen här är viktig eftersom funktionerna som anropas är noga med om det är rubriken (title) eller sökvägen som man anger.

1
2
3
4
5
6
7
8
$in_subcategory = false; // Nollställ kontrollvariabeln
$category_id = get_cat_id('Webbteve'); // Hämta ID för artikelgruppen. Får _inte_ vara slug!
foreach((array)get_term_children($category_id, 'category') as $child_category) { // Loopa igenom metadata
	if(in_category($child_category))$in_subcategory = true; // Hittar vi släktskap sätter vi SANT
}
if ( $in_subcategory || in_category('webbteve') ) { // Artikelgruppen slug _måste_ anges!
	// Nu är vi i artikelgruppen eller en undergrupp
}

Om man istället vill lägga kontrollen utanför loopen, och även ange ID för artikelgruppen istället för namnet så får man göra så här:

1
2
3
4
5
6
7
8
$in_subcategory = false; // Nollställ kontrollvariabeln
foreach((array)get_term_children(1, 'category') as $child_category) { // ID för category är "1"
	if(in_category($child_category))$in_subcategory = true;
}
$getcats = get_the_category(); // Hämta efterfrågad category_ID som en array
if ( $in_subcategory || $getcats[0]->cat_ID == 1 ) { // Kolla om vi är i en undergrupp eller cat_ID "1".
	// Nu är vi i artikelgruppen eller en undergrupp
}

Hoppa högst upp på sidan

Det finns inga kommentarer. Prenumerera på kommentarer till artikeln via RSS

Lämna en kommentar

Hoppa högst upp på sidan