I'm not sure if what I'm asking is possible or not. Anyways, I'm fetching custom post type from the database based on category.

When I tick subcategory or even subcategory of subcategory, all parent category gets fetched as well.

The image below shows 'Cosmetic Aesthetic Surgery' a subcategory of 'Plastic Surgery' which is also a subcategory of 'service'

So the whole thing looks like this

    Plastic Surgery
        Cosmetic Aesthetic Surgery

When creating the post, if I tick the 'Cosmetic Aesthetic Surgery' ONLY, Wordpress adds my post to 'Plastic Surgery' and 'Service'.

Is there a way to show the only checked category, if a parent is not checked, then it gets ignored

This is my code


class benson_doctors_plugin{

    function load_doctors( $category ){
        $args = array(
            'post_type'      => 'harley_doctors',
            'posts_per_page' => 10,
            'cat' => $category

        $data = ""; 

        $loop = new WP_Query($args);
            $data .= "<div class='doctors-speciality-holder'>";
            $data .= "<div class='doctors-speciality'>Doctors Specializing in ".$category."</div>";

            while ( $loop->have_posts() ) {
                $data .= "  <div class='doctors-data'>
                                <div class='doctors-post-thumbnail'>".get_the_post_thumbnail(false, 'thumbnail', NULL)."</div>
                                <div class='doctors-data-title'> 

                                <div class='doctors-description'>
                                  ".get_summary( get_the_content() )."
            $data .="</div>";

        // Restore original post data.

        return $data; 

add_filter ('the_content', 'insert_doctors');
function benson_insert_doctors($content) {

    global $post; 
    $data = ""; 

    if( get_post_type( $post ) != "post" ){
        return $content; 

    $categories =  get_the_category($post->ID); 

    if( is_single() ){
        if (!class_exists('benson_doctors_plugin')){
            return $content; 

        $benson_doc = new benson_doctors_plugin();

        foreach ($categories as $key => $value) {
            $category = $value->cat_name;
            if( $category == "Service" || $category == "Featured" || $category == "Patient Information" ){
                // do nothing
            } else {
                $data .=$benson_doc->load_doctors( $category );

   return $data.$content;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.