Metabox选择-前端显示

时间:2015-08-18 作者:artist learning to code

嗨,我买了一个主题,但我需要在前端提交表单中添加一些字段。我添加了元盒,它们正在工作,但问题是元盒的选择类型。

我克隆了一个select表单组,该组从post分类中获取数据,但我不知道如何调整它,使其从“items”数组中“抓取”数据。

这是我的代谢箱:

array(
    \'type\'  => \'select\',
    \'name\'  => \'resume_change_location\',
    \'label\' => __( \'Are you willing to change location?\', \'jobboard\' ),
    \'description\'   => __( \'\' ),
    \'items\' => array(
        array(
            \'value\' => \'yes\',
            \'label\' => __( \'Yes\', \'jobboard\' ),
        ),
        array(
            \'value\' => \'no\',
            \'label\' => __( \'No\', \'jobboard\' ),
        ),
    ),

),
下面是分类法数据(工作)的下拉列表:

<select name="job_type" id="job_type" class="form-control">
                            <option value=""><?php echo \'-- \'.__( \'Select Type\', \'jobboard\' ).\' --\'; ?></option>
                        <?php
                            $terms = get_terms( \'job_type\', array( \'hide_empty\' => false, ) );
                            foreach( $terms as $term ){
                                $selected = \'\';
                                if( $default[\'job_type\'] == $term->slug ){
                                    $selected = \'selected\';
                                }
                                echo \'<option value="\'.$term->slug.\'" \'.$selected.\'>\'.esc_attr($term->name).\'</option>\';
                            }
                        ?>
                        </select>
我想显示包含我的metabox中的项目的下拉列表。。。这是我得到的,但它没有显示我的项目(它显示下拉列表,但有空白选项)

<select class="form-control" name="change">
                        <option value=""><?php _e( \'Select\', \'jobboard\' ); ?></option>
                    <?php
                        $change = get_post_meta($post->ID, $key, \'resume_change_location\', true);
                        foreach( $change as $key){
                            $selected = \'\';
                            if( $key->name == $default[\'resume_change_location\'] ){
                                $selected = \'selected="selected"\';
                            }//endif;
                            echo \'<option value="\'.$key->name.\'" \'.$selected.\'>\'.esc_attr($key->name).\'</option>\';
                        }
                    ?>
                    </select>   
我一直在寻找一种方法,使这项工作大约3个小时没有运气。。。非常感谢您的帮助。

1 个回复
SO网友:Mike

$change = get_post_meta($post->ID, $key, \'resume_change_location\', true);
发件人https://developer.wordpress.org/reference/functions/get_post_meta/

get\\u post\\u meta返回一个数组,而不是一个对象,因此需要使用$change[\'index\']

另一件事是,在元框中,您似乎保存的是字符串而不是数组,因此foreach将失败。

以下内容应该有效。。。

    $change = get_post_meta( $post->ID, $key, \'resume_change_location\', true );
    <option value=""><?php _e( \'Select\', \'jobboard\' ); ?></option>
    <option value="Yes"<?php selected( \'Yes\', $default[\'resume_change_location\'] ); ?>>Yes</option>
    <option value="No"<?php selected( \'No\', $default[\'resume_change_location\'] ); ?>>No</option>
    </select>
还请注意我使用的内置WordPress selected函数-https://codex.wordpress.org/Function_Reference/selected

结束

相关推荐

Dropdown category filter

Ive是一个设置为过滤各种类别的数组,目前它只显示10个,最多显示10个帖子,而不是所有帖子。我哪里出错了?<div class=\"select-search\"> <div class=\"ten columns beer-filter\"> <form id=\"category-select\" class=\"select-search\" action=\"<?php echo esc_url( home_url(