Skip Navigation

[Resolved] Filter custom post with a taxonomy filter

This support ticket is created 4 years, 3 months ago. There's a good chance that you are reading advice that it now obsolete.

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

Our next available supporter will start replying to tickets in about 1.97 hours from now. Thank you for your understanding.

Sun Mon Tue Wed Thu Fri Sat
- 10:00 – 13:00 10:00 – 13:00 10:00 – 13:00 10:00 – 13:00 10:00 – 13:00 -
- 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 -

Supporter timezone: Asia/Kolkata (GMT+05:30)

This topic contains 10 replies, has 2 voices.

Last updated by Timothy 4 years, 2 months ago.

Assisted by: Minesh.

Author
Posts
#1738261

I have a cpt called Faculty Members with 2 taxonomies "Leadership Category" and "Faculty Category". I created a View that displays the Faculty, but I want to only display the Faculty members that are in a Faculty Category not a Leadership Category, and have the front-end filters only show the Categories from the Faculty Category. I currently have the View embedded here:

hidden link

Everything works except on initial page load it displays all faculty members even if they are in a Leadership Category and not in any Faculty Category. So it appears the All initial filter does not actually filter according to the Taxonomy filter "Faculty Category" that I have the filter set to.

[wpv-control-post-taxonomy taxonomy="faculty-category" type="radios" default_label="All " url_param="wpv-faculty-category"]

Tim

#1738771

Minesh
Supporter

Languages: English (English )

Timezone: Asia/Kolkata (GMT+05:30)

Hello. Thank you for contacting the Toolset support.

Yes - By default, view displays all results.

Do you mean that when view load the first time - you only want to displays the posts which belongs to category "Faculty Category".

If this is true- we need to add a query filter to pre-filter the view results.

If you can share access details, I am happy to share the filter.

*** Please make a FULL BACKUP of your database and website.***
I would also eventually need to request temporary access (WP-Admin and FTP) to your site. Preferably to a test site where the problem has been replicated if possible in order to be of better help and check if some configurations might need to be changed.

I have set the next reply to private which means only you and I have access to it.

#1738855

Yes, when view load the first time I only want to displays the posts which belongs to category "Faculty Category". Can you just let me know where/how to add that query filter and I can do it myself.

Thanks,

Tim

#1738903

Minesh
Supporter

Languages: English (English )

Timezone: Asia/Kolkata (GMT+05:30)

You can use the view's filter hook - wpv_filter_query

Where:
- you should try to get all the posts IDs attached to taxonomy "Faculty Category" and use the post__in query argument and assign the found IDs.

For example:
- Add the following code to "Custom Code" section offered by Toolset
=> https://toolset.com/documentation/adding-custom-code/using-toolset-to-add-custom-code/
or
- to the functions.php file of your theme.

add_filter( 'wpv_filter_query', 'func_remove_unwanted_category_posts', 99, 3 );
function func_remove_unwanted_category_posts( $query_args, $view_settings, $views_id  ) {

    if ( $views_id == 9999 and  !isset($_GET['wpv-faculty-category']) ) {  
         
                      /// YOUR CODE GOES HERE
                    $found_post_ids =    get the  post IDs belongs to  "Faculty Category";

                   $query_args['post__in'] =  $found_post_ids;
    }
    return $query_args;
}

Where:
- Replace 9999 with your original view ID and adjust the code accordingly

More info:
=> https://toolset.com/documentation/programmer-reference/views-filters/#wpv_filter_query

If you do not know how to do it, please let me know.

#1746101

I cannot get this to work, I also tried the solution here but that too does not seem to work:

https://toolset.com/forums/topic/display-all-posts-from-1-taxonomy/#post-1227954

Tim

#1746107

Minesh
Supporter

Languages: English (English )

Timezone: Asia/Kolkata (GMT+05:30)

Can you please share access details so I can login to your system and check whats going wrong or adjust the code accordingly.

*** Please make a FULL BACKUP of your database and website.***
I would also eventually need to request temporary access (WP-Admin and FTP) to your site. Preferably to a test site where the problem has been replicated if possible in order to be of better help and check if some configurations might need to be changed.

I have set the next reply to private which means only you and I have access to it.

#1753553

Minesh
Supporter

Languages: English (English )

Timezone: Asia/Kolkata (GMT+05:30)

Can you please check now: hidden link

I've added the following code to "Custom Code" section offered by Toolsest:
=> hidden link

add_filter( 'wpv_filter_query', 'func_prefilter_post_taxonomy', 99, 3 );
function func_prefilter_post_taxonomy( $query_args, $view_settings, $view_id ) {
 
   $display_view_ids = array(815);
      
    if (in_array($view_id,$display_view_ids) and empty($query_args['tax_query']) ){
       
         $query_args['tax_query'] = array(array(
                    'taxonomy'=> 'leadership-category',
                    'field' => 'id',
                    'terms' => array(49,50,51),
                    'operator' => 'NOT IN',
                    'include_children' => 1
                ));
         
    }
    return $query_args;
}

More info:
=> https://toolset.com/documentation/adding-custom-code/using-toolset-to-add-custom-code/

Can you please confirm it works as expected now.

#1757401

Minesh
Supporter

Languages: English (English )

Timezone: Asia/Kolkata (GMT+05:30)

Can you please confirm the solution I shared help you to resolve your issue.

#1757663

Hi Minesh,

This sort of works. It does exclude people who are in the Leadership taxonomy from appearing in "All". But if a Faculty Member is in a Faculty taxonomy AND a Leadership taxonomy then they too are excluded from "All". So for example if you click Music History you will see "Neal" as he is in Faculty > Music History. But because he is also in the Leadership taxonomy he does not appear in 'All" and he should.

Is there a way around this?

Tim

#1757675

Minesh
Supporter

Languages: English (English )

Timezone: Asia/Kolkata (GMT+05:30)

Can you please check now: hidden link

i've adjusted the "wpv_filter_query" hook code as given under at "Custom Code" section of Toolset:
=> hidden link

add_filter( 'wpv_filter_query', 'func_prefilter_post_taxonomy', 99, 3 );
function func_prefilter_post_taxonomy( $query_args, $view_settings, $view_id ) {
 
   $display_view_ids = array(815);
      
    if (in_array($view_id,$display_view_ids) and empty($query_args['tax_query']) ){
        
       $query_args['tax_query'] = array(
         			'relation' => 'OR',
         			array(
                    'taxonomy'=> 'faculty-category',
                     'operator' => 'EXISTS',
                   ),
         			array(
                    'taxonomy'=> 'leadership-category',
                    'field' => 'id',
                    'terms' => array(49,50,51),
                    'operator' => 'NOT IN',
                    'include_children' => 1
                )
       );
      
    }
    return $query_args;
}

Can you please confirm now it works as expected.

#1757703

My issue is resolved now. Thank you!