How to display the terms in a dropdown list in the admin option in wordpress

I have a custom post type which has a custom taxonomy called “country”. I want a drop-down list in the Dashboard -> Theme Option to select the term name under this taxonomy. So I have created the following function:

function featured_country($show_count = false, $country_array = array()) {
    $countries = get_terms( 'category', 'hide_empty=0&fields=all' );
    foreach ($countries as $countr) {
        $country_array[$countr->term_id] = $countr->name;
    }
    return $country_array;
}

Then I call this function as follows:

Read More
$this->admin_option('Front Page Option', 
    'Featured country', 'featured_country', 
    'select', '', 
    array('options'=>$this->featured_country(true, array(''=>'Select Category')),
    'help'=>'Some helping text')
);

Unfortunately this drop-down list displays nothing. But when I put the parameter of get_terms() as “category” or “link_category” it works.

I can not understand where is my problem. How can I solve this? Please help me.

Related posts

Leave a Reply

2 comments

  1. Try out this code

    function get_terms_dropdown($taxonomies, $args){
        $myterms = get_terms($taxonomies, $args);
        $output ="<select name='TAXONOMY SLUG'>";
        foreach($myterms as $term){
            $root_url = get_bloginfo('url');
            $term_taxonomy=$term->taxonomy;
            $term_slug=$term->slug;
            $term_name =$term->name;
            $link = $term_slug;
            $output .="<option value='".$link."'>".$term_name."</option>";
        }
        $output .="</select>";
    return $output;
    }
    

    (I took it from this forum thread)

  2. Here’s the example where Custom taxonomy” is courses” & custom post type for that is “help_lessions

    /*
     * Set Selectbox for Custom taxonomy "courses" in admin panel
     */
    
    function custom_meta_box() {
        remove_meta_box('tagsdiv-courses', 'help_lessions', 'side');
        add_meta_box('tagsdiv-courses', 'Course', 'Courses_meta_box', 'help_lessions', 'side');
    }
    add_action('add_meta_boxes', 'custom_meta_box');
    
    /* Prints the taxonomy box content */
    
    function courses_meta_box($post) {
    
        $tax_name = 'courses';
        $taxonomy = get_taxonomy($tax_name);
    ?>
        <div class="tagsdiv" id="<?php echo $tax_name; ?>">
            <div class="jaxtag">
        <?php
        // Use nonce for verification
        wp_nonce_field(plugin_basename(__FILE__), 'courses_noncename');
        $help_ids = wp_get_object_terms($post->ID, 'courses', array('fields' => 'ids'));
        wp_dropdown_categories('taxonomy=courses&hide_empty=0&orderby=name&name=courses&show_option_none=Select Course&selected=' . $help_ids[0]);
        ?>
            <p class="howto">Select your Course</p>
            </div>
        </div>
        <?php
    }
    
    /* When the post is saved, saves our custom taxonomy */
    
    function courses_save_postdata($post_id) {
        // verify if this is an auto save routine. 
        // If it is our form has not been submitted, so we dont want to do anything
        if (( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) || wp_is_post_revision($post_id))
            return;
    
        // verify this came from the our screen and with proper authorization,
        // because save_post can be triggered at other times
    
        if (!wp_verify_nonce($_POST['courses_noncename'], plugin_basename(__FILE__)))
            return;
    
        // Check permissions
        if ('help_lessions' == $_POST['post_type']) {
            if (!current_user_can('edit_page', $post_id))
                return;
        }
        else {
            if (!current_user_can('edit_post', $post_id))
                return;
        }
    
        // Now, we need to find and save the data
    
        $help_id = $_POST['courses'];
        $help = ( $help_id > 0 ) ? get_term($help_id, 'courses')->slug : NULL;
        wp_set_object_terms($post_id, $help, 'courses');
    }
    add_action('save_post', 'courses_save_postdata');