Kategorian piilottaminen ylläpidossa

Tulipa tällainenkin tarve vastaan. WordPress-saitilla on tavallisia artikkeleita ja uutisia. Kaikki ovat tavallisia merkintöjä ja eroteltu kategorioilla. Uutisia on moninkertaisesti enemmän kuin muita artikkeleita, joten ne haluttaisiin saada syrjään ylläpitokäyttöliittymästä.

Yksi ratkaisu olisi tehdä uutisista oma custom post type, jolloin ne olisivat näppärästi erillään. Tämä ei kuitenkaan aina onnistu tai voi olla muuten epäkäytännöllinen. Keksin asiaan tällaisen ratkaisun:

add_filter('the_posts', 'admin_posts_filter');
function admin_posts_filter($posts) {
	if (!is_admin()) return $posts;
	global $wp_query;
	if ($wp_query->query_vars['cat'] == XX) return $posts;

	$ok_posts = array();
	foreach ($posts as $t_post) {
		$cats = get_the_category($t_post->ID);
		if ($cats[0]->cat_ID != XX) array_push($ok_posts, $t_post);
	}

	return $ok_posts;
}

Tuohon kun vaihtaa XX:n tilalle halutun kategorian ID-numeron, niin kyseisen kategorian merkintöjä ei ylläpidon Artikkelit-listassa näy, ellei niitä erikseen halua kategoriasuodattimella nähdä. Tässä on oikaistu hieman ja oletettu, että jokaisella merkinnällä on vain yksi kategoria, joten koodi tarkistaa vain jokaisen merkinnän ensimmäisen kategorian. Jos haluaa tehdä paremman, niin käy foreach-silmukalla läpi tuon $cats-muuttujan jokaisen arvon.

Kysy tai kommentoi

  • (ei näy muille)

XHTML: Voit käyttää näitä tägejä: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">