I am currently trying to create a function where a user can tick a checkbox in a meta box in a custom post type page that will then list all the posts of another custom post type taxonomy term.
To simply here is what I have done:
1) I have created 2 CPTs, 1 is for ‘Staff’ the other is for ‘Services’.
2) For the ‘Staff’ CPT I have set up a taxonomy named ‘departments’ which has terms such as ‘childcare’, ‘crime’ etc.
3) Each ‘Staff’ post has been assigned to whatever ‘departments’ are relative.
4) I have created a checkbox in a custom meta box for the ‘Services’ CPTs, which lists all the ‘Departments’ taxonomy terms.
What I need to do now id figure out how I can use the data from the ‘Services’ checkbox to polulate a list of Staff Members on the Service page. For example, say I add a service page called Medical and check the ‘childcare’ and ‘crime’ boxes, I want the Medical service page to display in separate lists the titles (with links) to any Staff CPTs that have been assigned to those terms.
Is this possible? If so, can anyone point me in the right direction as to how I would do this please?
say I add a service page called Medical and check the ‘childcare’ and ‘crime’ boxes
If I got it right you created multiple checkboxes. One for each taxonomy term used by the “staff” CPT? Or do you use the same taxonomy “departments” for “services”?
How do you save the data for the checkbox(es)?
One option I’m working on is to set up multiple queries in the single-services template that checks to see if a checkbox is selected and if so, output a list of the posts. So far my code looks like this but it doesn’t work correctly:
<?php if( $childcare_cb = get_post_meta($post->ID, '_childcare_cb', true) ): ?> <ul> <?php $query_hot = new WP_Query( array( 'taxonomy' => 'departments', 'field' => 'slug',// You can use the ID or slug here 'terms' => 'childcare' )); while($query_hot->have_posts()) : $query_hot->the_post(); ?> <li> <a href="<?php the_permalink(); ?>"><?php the_title();?></a> </li> <?php endwhile; wp_reset_postdata(); // reset the query ?> </ul> <?php endif; ?>
For some reason is it displaying a list of my standard posts (i.e. news items).
Obviously if I went down this route I’d also have to set up a query for each one of the ‘Departments’ taxonomy tags which at current count is about 20. That’s fine if I can get it to work, but if anyone knows a more graceful solution I’d be incredibly grateful.
So it’s one checkbox. You save it as a custom field.
Or do you use the same taxonomy “departments” for “services”?
Do you use the same “departments” taxonomy for “services” CPT?
You have to use a tax_query with the code that’s not working right now:
$args = array( 'tax_query' => array( array( 'taxonomy' => 'departments', 'field' => 'slug', 'terms' => 'childcare' ) ) ); $query_hot = new WP_Query($args);
Sorry I’m a designer by trade so I’ll try my best to answer your questions.
To create the checkboxes, I used the meta box script over at Deluxe Blog tips:
with the actual checkbox created with this:
array( 'name' => 'Departments', 'id' => $prefix . 'departments', 'type' => 'taxonomy', // File type: taxonomy 'options' => array( 'taxonomy' => 'departments', // Taxonomy name 'type' => 'checkbox_list', // How to show taxonomy: 'checkbox_list' (default) or 'select'. Optional 'args' => array(), // Additional arguments for get_terms() function ), 'desc' => 'Select which staff department lists you wish to display'
I’m not sure how the data is saved.
Another thing I have done is to create a standalone checkbox for one of the ‘Departments’ taxonomy terms called ‘childcare’ like so:
array( 'name' => 'Single Department', // File type: checkbox 'id' => $prefix . 'childcare_cb', 'type' => 'checkbox', 'desc' => 'Childcare', 'std' => 0 // Value can be 0 or 1 ),
Using this and the following code in the template:
<?php if( $childcare_cb = get_post_meta($post->ID, '_childcare_cb', true) ): ?> <ul> <li><?php echo $childcare_cb; ?></li> </ul> <?php else: ?> <?php endif; ?>
I end up with something like this:
Which I assume is listing the number of members members who I have assigned to the ‘chilcare’ term. This is a start, but ideally I need to display the title and a thumbnail for each of the staff members assigned to each department.
At the moment I have only set up the taxonomy for the People CPT not for the Services. The Services don’t need any Taxonomies because they are all stand alone Service pages.
Please answer this, Do you have multiple checkboxes in your metabox (one for each term used by the “staff” CPT)?
maybe this will help: https://github.com/rilwis/meta-box/wiki/1.02.-Get-Meta-Field-Value
(read the section: Get value of field with multiple values)
I end up with something like this:
This means that the checkbox was checked for that post. I don’t know the meta box script for wordpress. Other values if the checkbox was not checked could be 0 or an empty string:
Thanks for your patience Keesiemeijer.
At the moment I have set up three things in the metabox:
1) A standard textarea
2) A single stand-alone checkbox for the childcare term (see childcare_cb above)
3) A set of multiple checkboxes that contain all the departments taxonomy terms (see departments array above).
This was done because originally I set up number 3, but didn’t know how I could get the data from that to display the term posts lists.
So I then set up a standalone checkbox for one of the terms (with the idea of creating more for all the other terms if I managed to get that one working) as I thought I would have a better idea of getting that to work.
I don’t mind what option I have to use. If all the terms can stay in one multiple checkbox list, then great. If however I have to create standalone checkboxes for all the taxonomy terms that’s ok as well.
If it helps, this is my current complete meta box code:
Is that what you meant?
Try it with this: http://pastebin.com/iMnNjheh
- The topic ‘Displaying posts of checked taxonomy terms in list?’ is closed to new replies.