Skip to content

Instantly share code, notes, and snippets.

@Basilakis
Created September 30, 2019 20:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Basilakis/f2239e760864b2b4d3ec3a382b9558a2 to your computer and use it in GitHub Desktop.
Save Basilakis/f2239e760864b2b4d3ec3a382b9558a2 to your computer and use it in GitHub Desktop.
Create Filters to be used over Post Type to short by category(ies)
function filter_cars_by_taxonomies( $post_type, $which ) {
// Apply this only on a specific post type
if ( 'car' !== $post_type )
return;
// A list of taxonomy slugs to filter by
$taxonomies = array( 'manufacturer', 'model', 'transmission', 'doors', 'color' );
foreach ( $taxonomies as $taxonomy_slug ) {
// Retrieve taxonomy data
$taxonomy_obj = get_taxonomy( $taxonomy_slug );
$taxonomy_name = $taxonomy_obj->labels->name;
// Retrieve taxonomy terms
$terms = get_terms( $taxonomy_slug );
// Display filter HTML
echo "<select name='{$taxonomy_slug}' id='{$taxonomy_slug}' class='postform'>";
echo '<option value="">' . sprintf( esc_html__( 'Show All %s', 'text_domain' ), $taxonomy_name ) . '</option>';
foreach ( $terms as $term ) {
printf(
'<option value="%1$s" %2$s>%3$s (%4$s)</option>',
$term->slug,
( ( isset( $_GET[$taxonomy_slug] ) && ( $_GET[$taxonomy_slug] == $term->slug ) ) ? ' selected="selected"' : '' ),
$term->name,
$term->count
);
}
echo '</select>';
}
}
add_action( 'restrict_manage_posts', 'filter_cars_by_taxonomies' , 10, 2);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment