2

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

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”时,它就可以工作了。

我不明白我的问题在哪里。我该如何解决这个问题?请帮我。

4

2 回答 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;
}

(我从这个论坛帖子中获取的)

于 2012-11-12T15:18:56.553 回答
0

这是自定义分类法的示例,其中“课程”和自定义帖子类型为“ 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');
于 2016-12-30T05:35:22.653 回答