使用Get_Categories选择菜单下拉菜单的自定义小部件

时间:2013-05-17 作者:charlenemasters

我创建了一个自定义小部件,它应该显示一个包含博客所有类别的选择菜单。我使用get\\u categories来编译列表。这很好,所有类别都显示在下拉菜单中。每次我保存并刷新小部件页面时,自定义小部件就不再存在了。我检查过了function update 那里一切都很好。所以我想这一定是我创建表单的方式。有什么想法吗?提前谢谢。

我不想转储所有代码,所以我只粘贴了创建表单的函数。如果你需要更多,请发表评论

function form( $instance ) {

    /* Default Widget Settings */

    $defaults = array(
        \'title\' => \'Highlight Category\',
        \'select\'=> \'Option 1\'
    );

    $instance = wp_parse_args( (array) $instance, $defaults ); 

?>

    <!-- Widget Title -->
    <p>
        <label for="<?php echo $this->get_field_id( \'title\' ); ?>"><?php _e(\'Title:\', \'lang\') ?></label>
        <input type="text" class="widefat" id="<?php echo $this->get_field_id( \'title\' ); ?>" name="<?php echo $this->get_field_name( \'title\' ); ?>" value="<?php echo $instance[\'title\']; ?>" />
    </p>

    <!-- Widget Article Count -->   
    <p>
        <label for="<?php echo $this->get_field_id(\'select\'); ?>"><?php _e(\'This is a select menu\', \'lang\'); ?></label>
        <select name="<?php echo $this->get_field_name(\'select\'); ?>" id="<?php echo $this->get_field_id(\'select\'); ?>" class="widefat"> 
            <option value="<?php echo $this->get_field_name(\'select\'); ?>"><?php echo $instance[\'select\']; ?></option> 
            <?php 
             $categories=  get_categories(\'child_of=0\'); 
             foreach ($categories as $category) {
                $option = \'<option value="\' . $category->cat_name . \'" id="\' . $this->get_field_id( \'select\' ) . \'">\';
                $option .= $instance[\'select\'];
                $option .= \' (\'. $this->get_field_id( \'select\' ) .\')\';
                $option .= \'</option>\';
                echo $option;
             }
            ?>
        </select>
    </p>

<?php 
}

2 个回复
最合适的回答,由SO网友:charlenemasters 整理而成

好的,我找到了一个解决方案,这要归功于:Using wp_dropdown_categories in widget options

以下是我使用的代码:

function form( $instance ) {
    /* Default Widget Settings */
    $defaults = array(
        \'title\' => \'Highlight Category\'
    );
    $instance = wp_parse_args( (array) $instance, $defaults ); 
?>

    <!-- Widget Title -->
    <p>
        <label for="<?php echo $this->get_field_id( \'title\' ); ?>"><?php _e(\'Title:\', \'thstlang\') ?></label>
        <input type="text" class="widefat" id="<?php echo $this->get_field_id( \'title\' ); ?>" name="<?php echo $this->get_field_name( \'title\' ); ?>" value="<?php echo $instance[\'title\']; ?>" />
    </p>

    <!-- Category Select Menu -->   
    <p>
        <select id="<?php echo $this->get_field_id(\'kwtax\'); ?>" name="<?php echo $this->get_field_name(\'kwtax\'); ?>" class="widefat" style="width:100%;">
            <?php foreach(get_terms(\'category\',\'parent=0&hide_empty=0\') as $term) { ?>
            <option <?php selected( $instance[\'kwtax\'], $term->term_id ); ?> value="<?php echo $term->term_id; ?>"><?php echo $term->name; ?></option>
            <?php } ?>      
        </select>
    </p>
<?php 
}

SO网友:Pakpoom Tiwakornkit

我使用wp_dropdown_categories() 函数,它有助于保持我的代码干净。这是我的密码。

  <p>
    <label for="<?php echo $this->get_field_id( \'category\' ); ?>"><?php _e( \'Select category\', \'textdomain\' ); ?>:</label>
    <?php wp_dropdown_categories( array( \'show_option_none\' =>\' \',\'name\' => $this->get_field_name( \'category\' ), \'selected\' => $category ) ); ?>
  </p>

结束

相关推荐

对外部PHP脚本中GET_POSTS返回的帖子进行计数

我使用外部PHP脚本中的WP,包括wp-load.php 文件到目前为止,所有功能和一切都按预期工作,除了一件事:我无法获得$wp_query->found_posts 在我用get_posts() 作用有什么提示我应该用什么来代替吗?谢谢