首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用中继器JQuery保存多个自定义用户配置文件字段

如何使用中继器JQuery保存多个自定义用户配置文件字段
EN

WordPress Development用户
提问于 2019-03-08 12:28:25
回答 1查看 1.5K关注 0票数 0

我正在尝试创建多个自定义用户配置文件字段,以允许我们的用户在其配置文件页面中添加更多的软件技能。

我面临的问题是,它总是只为"skills"“保存一个元,为"skills_percent"保存一个元,即使我添加了更多的输入!

当我添加更多字段时,我应该做些什么来保存它们呢?

以及如何在前端显示所有这些信息!

这就是我所做的。

代码语言:javascript
复制
              +        
              
                
                  
                  

                  -

adding/removing字段的动态脚本。

代码语言:javascript
复制
jQuery(document).ready(function($) {
$('.multi-field-wrapper').each(function() {
    var $wrapper = $('.multi-fields', this);
    $(".add-field", $(this)).click(function(e) {
        $('.multi-field:first-child', $wrapper).clone(true).appendTo($wrapper).find('input').val('').focus();
    });
    $('.multi-field .remove-field', $wrapper).click(function() {
        if ($('.multi-field', $wrapper).length > 1)
            $(this).parent('.multi-field').remove();
    });
});
});

更新用户元

代码语言:javascript
复制
if ( !empty( $_POST['skills'] ) )
    update_user_meta( $current_user->ID, 'skills', esc_attr( $_POST['skills'] ) );

if ( !empty( $_POST['skills_percent'] ) )
    update_user_meta( $current_user->ID, 'skills_percent', esc_attr( $_POST['skills_percent'] ) );

在前端显示作者元

代码语言:javascript
复制
SkillsID); ?> ID); ?>

Update 1作为mrben522答案

代码语言:javascript
复制
if ( !empty( $_POST['skills'] ) )
    $skillArray = [];
if (is_array($_POST['skills'])) {
    foreach ($_POST['skills'] as $skill) {
        $skillArray[] = esc_attr($skill);
    }
} else {
    $skillArray[] = esc_attr($_POST['skills']);
}

    update_user_meta( $current_user->ID, 'skills', $skillArray );


if ( !empty( $_POST['skills_percent'] ) )
    $skills_percentArray = [];
if (is_array($_POST['skills_percent'])) {
    foreach ($_POST['skills_percent'] as $skill_percent) {
        $skills_percentArray[] = esc_attr($skill_percent);
    }
} else {
    $skills_percentArray[] = esc_attr($_POST['skills_percent']);
}

    update_user_meta( $current_user->ID, 'skills_percent', $skills_percentArray );

但是它返回数组的技能和技能百分比,也没有保存"multi-field"的第二个div

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2019-03-08 13:26:11

在输入名称中添加方括号,让PHP将其解释为数据数组,而不是用每个新输入覆盖值。

所以您的输入将如下所示:

代码语言:javascript
复制

您的卫生处理将如下所示(重复skills_percent的结构):

代码语言:javascript
复制
if ( !empty( $_POST['skills'] ) )
    $skillArray = [];
if (is_array($_POST['skills'])) {
    foreach ($_POST['skills'] as $skill) {
        if (!empty($skill)) {
            $skillArray[] = esc_attr($skill);
        }
    }
} else {
    $skillArray[] = esc_attr($_POST['skills']);
}

    update_user_meta( $current_user->ID, 'skills', $skillArray );

编辑:您也可以使用array_map而不是foreach循环。

$skillArray = array_map('esc_attr', $_POST['skills']);

编辑2:下面是循环数据以显示输入的基本结构。我不喜欢这个布局,因为它依赖于两个数组保持不变的索引,但是它应该能工作。

代码语言:javascript
复制
ID );
$skillPercents = get_the_author_meta( 'skills_percent', $current_user->ID );
if (is_array($skills) && is_array($skillPercents)) {
    foreach ($skills as $index => $skill) {
        ?>
        
            
            

            -
        
        
    
        
        

        -

您可以在2d数组中将每个技能和百分比作为自己的数组重新工作,这样如果您愿意的话,它会更坚固一些。

票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/331077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档