回显下拉列表中的选定值

时间:2021-09-15 作者:user3152370

这是一篇自定义类型的文章,当我在下拉列表中选择一个选项时,我有一个自定义字段(下拉列表);“设计应用程序”并保存帖子。

然后,当我稍后尝试更新帖子时,我发现;游戏应用程序默认选中,这是列表中的第一个选项。

它没有检索到所选的保存选项,我在谷歌上搜索并试图修复自己,但没有结果。

esc_attr( $j_applicationCategory ) 不起作用,它返回;游戏应用程序。

下面是我使用的代码:

add_action( \'add_meta_boxes\', \'progs_add_meta_box\' );
function progs_meta_box_callback( $post ) {
    wp_nonce_field( \'progs_meta_box\', \'progs_meta_box_nonce\' );
    
    
    $j_applicationCategory = get_post_meta( $post->ID, \'_j_applicationCategory\', true );
    
    echo \'<p><label for="j_applicationCategory">\' . __(\'Application Category\', \'the220px\') . \'</label>\';
    echo \'<select id="j_applicationCategory" name="j_applicationCategory" value="\' . esc_attr( $j_applicationCategory ) . \'" style="width: 100%" />\';
    echo \'<option value="GameApplication">GameApplication</option>\';
    echo \'<option value="UtilitiesApplication">UtilitiesApplication</option>\';
    echo \'<option value="DesignApplication">DesignApplication</option>\';
    echo \'<option value="ReferenceApplication">ReferenceApplication</option>\';
    echo \'</select>\';
    echo \'</p>\';    
    
}


function progs_save_meta_box_data( $post_id ) {
    if ( ! isset( $_POST[\'progs_meta_box_nonce\'] ) ) {
        return;
    }
    if ( ! wp_verify_nonce( $_POST[\'progs_meta_box_nonce\'], \'progs_meta_box\' ) ) {
        return;
    }
    if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) {
        return;
    }
    if ( isset( $_POST[\'post_type\'] ) && \'progs\' == $_POST[\'post_type\'] ) {
        if ( ! current_user_can( \'edit_page\', $post_id ) ) {
            return;
        }
    } else {
        if ( ! current_user_can( \'edit_post\', $post_id ) ) {
            return;
        }
    }
    
    if ( ! isset( $_POST[\'j_applicationCategory\'] ) ) {
        return;
    }
    
    $j_applicationCategory = sanitize_text_field( $_POST[\'j_applicationCategory\'] );

    update_post_meta( $post_id, \'_j_applicationCategory\', $j_applicationCategory );

}

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

这纯粹是一个HTML问题。问题是您试图通过设置value="" 上的属性<select> 要素不是这样的<select> 作品

要将选项标记为默认选中,请<option> 标签需要提供selected 属性

例如,您正在输出以下内容:

<select id="j_applicationCategory" name="j_applicationCategory" value="UtilitiesApplication" style="width: 100%" />
    <option value="GameApplication">GameApplication</option>
    <option value="UtilitiesApplication">UtilitiesApplication</option>
    <option value="DesignApplication">DesignApplication</option>
    <option value="ReferenceApplication">ReferenceApplication</option>
</select>
您需要输出以下内容:

<select id="j_applicationCategory" name="j_applicationCategory" style="width: 100%">
    <option value="GameApplication">GameApplication</option>
    <option value="UtilitiesApplication" selected>UtilitiesApplication</option>
    <option value="DesignApplication">DesignApplication</option>
    <option value="ReferenceApplication">ReferenceApplication</option>
</select>
还要注意,我删除了一个不适当的结束语/ 从select标记。

WordPress具有实用功能,selected(), 这使得基于当前值输出此属性更加容易:

echo \'<select id="j_applicationCategory" name="j_applicationCategory" style="width: 100%">\';
echo \'<option value="GameApplication" \' . selected( $j_applicationCategory, \'GameApplication\', false ) . \'>GameApplication</option>\';
echo \'<option value="UtilitiesApplication" \' . selected( $j_applicationCategory, \'UtilitiesApplication\', false ) . \'>UtilitiesApplication</option>\';
echo \'<option value="DesignApplication" \' . selected( $j_applicationCategory, \'DesignApplication\', false ) . \'>DesignApplication</option>\';
echo \'<option value="ReferenceApplication" \' . selected( $j_applicationCategory, \'ReferenceApplication\', false ) . \'>ReferenceApplication</option>\';
echo \'</select>\';

相关推荐

无法在前端显示来自metabox wp_dropdown_ages()的选定帖子标题

我在admin中使用wp_dropdown_pages() 显示自定义帖子类型中的帖子列表workshop. metabox下拉列表在admin中运行良好,我可以选择文章标题并保存它。问题是,当我尝试在前端显示metabox的值时,它只返回所选帖子的ID,而不是标题。如何在前端返回所选帖子的标题?metabox的PHP代码:add_action( \'add_meta_boxes\', \'mysite_work_add_meta_box\' ); if ( ! function_exists(