• I have set up a bunch of categories and sub categories my problem is that every post I make in the child categories shows up in the parent categories.

    How can I make a category called courses, that will have a simple description only and several child categories that will have detailed posts that dont show in the courses category as well?

Viewing 4 replies - 1 through 4 (of 4 total)
  • Thread Starter jfarmer

    (@jfarmer)

    Can anybody point me in the right direction?

    Hi,

    Either change your theme’s category.php so that it gives a different result when you show the parent category
    (e.g. if parentcategory ..DO THIS.. else ..DO THAT..)

    Or (which is probably easier) make a special template just for this parent category (e.g. category-4.php ) and make sure this displays only the description and it’s childs. (e.g. wp_list_categories)

    I could help you better if you would post your category.php code here!

    Thread Starter jfarmer

    (@jfarmer)

    Thanks for your help, Im a bit lost, I have categories 3 deep but it only shows the main category and a drop down for it, but it doesnt show my third level at all. Each category has everything in it from last post replicated 3 times

    <?php
    
    function get_all_category_ids() {
    	if ( ! $cat_ids = wp_cache_get('all_category_ids', 'category') ) {
    		$cat_ids = get_terms('category', 'fields=ids&get=all');
    		wp_cache_add('all_category_ids', $cat_ids, 'category');
    	}
    
    	return $cat_ids;
    }
    
    function &get_categories($args = '') {
    	$defaults = array('type' => 'category');
    	$args = wp_parse_args($args, $defaults);
    
    	$taxonomy = 'category';
    	if ( 'link' == $args['type'] )
    		$taxonomy = 'link_category';
    	$categories = get_terms($taxonomy, $args);
    
    	foreach ( array_keys($categories) as $k )
    		_make_cat_compat($categories[$k]);
    
    	return $categories;
    }
    
    function &get_category($category, $output = OBJECT, $filter = 'raw') {
    	$category = get_term($category, 'category', $output, $filter);
    	if ( is_wp_error( $category ) )
    		return $category;
    
    	_make_cat_compat($category);
    
    	return $category;
    }
    
    function get_category_by_path($category_path, $full_match = true, $output = OBJECT) {
    	$category_path = rawurlencode(urldecode($category_path));
    	$category_path = str_replace('%2F', '/', $category_path);
    	$category_path = str_replace('%20', ' ', $category_path);
    	$category_paths = '/' . trim($category_path, '/');
    	$leaf_path  = sanitize_title(basename($category_paths));
    	$category_paths = explode('/', $category_paths);
    	$full_path = '';
    	foreach ( (array) $category_paths as $pathdir )
    		$full_path .= ( $pathdir != '' ? '/' : '' ) . sanitize_title($pathdir);
    
    	$categories = get_terms('category', "get=all&slug=$leaf_path");
    
    	if ( empty($categories) )
    		return null;
    
    	foreach ($categories as $category) {
    		$path = '/' . $leaf_path;
    		$curcategory = $category;
    		while ( ($curcategory->parent != 0) && ($curcategory->parent != $curcategory->term_id) ) {
    			$curcategory = get_term($curcategory->parent, 'category');
    			if ( is_wp_error( $curcategory ) )
    				return $curcategory;
    			$path = '/' . $curcategory->slug . $path;
    		}
    
    		if ( $path == $full_path )
    			return get_category($category->term_id, $output);
    	}
    
    	// If full matching is not required, return the first cat that matches the leaf.
    	if ( ! $full_match )
    		return get_category($categories[0]->term_id, $output);
    
    	return null;
    }
    
    function get_category_by_slug( $slug  ) {
    	$category = get_term_by('slug', $slug, 'category');
    	if ( $category )
    		_make_cat_compat($category);
    
    	return $category;
    }
    
    function get_cat_ID($cat_name='General') {
    	$cat = get_term_by('name', $cat_name, 'category');
    	if ($cat)
    		return $cat->term_id;
    	return 0;
    }
    
    function get_catname($cat_ID) {
    	return get_cat_name($cat_ID);
    }
    
    function get_cat_name($cat_id) {
    	$cat_id = (int) $cat_id;
    	$category = &get_category($cat_id);
    	return $category->name;
    }
    
    function cat_is_ancestor_of($cat1, $cat2) {
    	if ( is_int($cat1) )
    		$cat1 = & get_category($cat1);
    	if ( is_int($cat2) )
    		$cat2 = & get_category($cat2);
    
    	if ( !$cat1->term_id || !$cat2->parent )
    		return false;
    
    	if ( $cat2->parent == $cat1->term_id )
    		return true;
    
    	return cat_is_ancestor_of($cat1, get_category($cat2->parent));
    }
    
    function sanitize_category($category, $context = 'display') {
    	return sanitize_term($category, 'category', $context);
    }
    
    function sanitize_category_field($field, $value, $cat_id, $context) {
    	return sanitize_term_field($field, $value, $cat_id, 'category', $context);
    }
    
    function &get_tags($args = '') {
    	$tags = get_terms('post_tag', $args);
    
    	if ( empty($tags) )
    		return array();
    
    	$tags = apply_filters('get_tags', $tags, $args);
    	return $tags;
    }
    
    function &get_tag($tag, $output = OBJECT, $filter = 'raw') {
    	return get_term($tag, 'post_tag', $output, $filter);
    }
    
    function update_category_cache() {
    	return true;
    }
    
    function clean_category_cache($id) {
    	clean_term_cache($id, 'category');
    }
    
    function _make_cat_compat( &$category) {
    	if ( is_object($category) ) {
    		$category->cat_ID = &$category->term_id;
    		$category->category_count = &$category->count;
    		$category->category_description = &$category->description;
    		$category->cat_name = &$category->name;
    		$category->category_nicename = &$category->slug;
    		$category->category_parent = &$category->parent;
    	} else if ( is_array($category) && isset($category['term_id']) ) {
    		$category['cat_ID'] = &$category['term_id'];
    		$category['category_count'] = &$category['count'];
    		$category['category_description'] = &$category['description'];
    		$category['cat_name'] = &$category['name'];
    		$category['category_nicename'] = &$category['slug'];
    		$category['category_parent'] = &$category['parent'];
    	}
    }
    
    ?>

    mmm.. now i’m confused as well! are you sure this is your theme’s ‘category.php’ and not ‘functions.php’ ??

    Because to me this looks like the code to define your specific functions, not the code to generate a category page/listing !

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘Category Help Please’ is closed to new replies.