Iâve created a custom post type (called Sponsors) with an additional taxonomy connected to it, called âTypeâ.
Everything is essentially working perfectly but I would very much like to have my taxonomy âTypeâ to be a dropdown menu instead of the usual âtype and search or create a newâ. The reason is, that Iâve created six different âTypesâ in the taxonomy and the people which are going to create new âsponsorsâ should only need to select one of those six for each new Sponsor post.
Iâve tried some tutorials and some guides found by Google but none which has yet to work.
The custom post type and the custom taxonomy is created by the plugin âCustom Post Type UIâ.
What I tried so far is this:
add_action('restrict_manage_posts','my_restrict_manage_posts');
function my_restrict_manage_posts() {
global $typenow;
if ($typenow=='sponsors'){
$args = array(
'show_option_all' => "Show All Categories",
'taxonomy' => 'type',
'name' => 'type'
);
wp_dropdown_categories($args);
}
}
add_action( 'request', 'my_request' );
function my_request($request) {
if (is_admin() && $GLOBALS['PHP_SELF'] == '/wp-admin/edit.php' && isset($request['post_type']) && $request['post_type']=='sponsors') {
$request['term'] = get_term($request['type'],'type')->name;
}
return $request;
}
And this
add_action( 'restrict_manage_posts', 'my_restrict_manage_posts' );
function my_restrict_manage_posts() {
// only display these taxonomy filters on desired custom post_type listings
global $typenow;
if ($typenow == 'sponsors' || $typenow == 'type') {
// create an array of taxonomy slugs you want to filter by - if you want to retrieve all taxonomies, could use get_taxonomies() to build the list
$filters = array('title_sponsor', 'platin-sponsor', 'guld-sponsor', 'diamant-sponsor');
foreach ($filters as $tax_slug) {
// retrieve the taxonomy object
$tax_obj = get_taxonomy($tax_slug);
$tax_name = $tax_obj->labels->name;
// retrieve array of term objects per taxonomy
$terms = get_terms($tax_slug);
// output html for taxonomy dropdown filter
echo "<select name='$tax_slug' id='$tax_slug' class='postform'>";
echo "<option value=''>Show All $tax_name</option>";
foreach ($terms as $term) {
// output each select option line, check against the last $_GET to show the current option selected
echo '<option value='. $term->slug, $_GET[$tax_slug] == $term->slug ? ' selected="selected"' : '','>' . $term->name .' (' . $term->count .')</option>';
}
echo "</select>";
}
}
}
But as I said, none which has worked.
Any help or suggestions would be very much appreciated.
Thanks
Sincere
– Mestika
This suppose you have a custom post type “sponsors” and a custom taxonomy “types”…