首页 文章

如何在wordpress的admin选项的下拉列表中显示术语

提问于
浏览
2

我有一个自定义的帖子类型,它有一个名为“country”的自定义分类 . 我想在仪表板 - >主题选项中的下拉列表中选择此分类法下的术语名称 . 所以我创建了以下函数:

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;
}

然后我调用这个函数如下:

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

不幸的是,这个下拉列表什么都没显示 . 但是当我将get_terms()的参数作为“category”或“link_category”时,它可以工作 .

我无法理解我的问题在哪里 . 我怎么解决这个问题?请帮我 .

2 回答

  • 0

    试试这段代码

    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;
    }
    

    (我从这个forum thread拿走了它)

  • 0

    以下是自定义分类“为 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');
    

相关问题