首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在用户设置Wordpress中添加/更新带有复选框的user_meta

在用户设置Wordpress中添加/更新带有复选框的user_meta
EN

Stack Overflow用户
提问于 2019-10-02 20:19:59
回答 1查看 81关注 0票数 1

我需要通过复选框在用户设置中设置一些值。我在fuctions.php中为用户添加了一个自定义复选框

代码语言:javascript
运行
复制
add_action( 'show_user_profile', 'add_extra_info' );
add_action( 'edit_user_profile', 'add_extra_info' );

function add_extra_info( $user ) { ?>

    <tr>
        <th>
            Specialization
        </th>
        <?php
            $Specialization = esc_attr(get_the_author_meta('Specialization',$user->ID,true )); 
            $Specialization = array(
                array( 'id' => 'AAA', 'name' => 'Just a comment' )
            );
        ?>
        <td>
            <label>
                <input type="checkbox"<?php if ($Specialization[0] == '1') { ?> checked="checked"<?php } ?>  name="Specialization[]" value="spec1"> Оффшоры и корпоративное право зарубежных государств 
            </label><br>
            <label>
                <input type="checkbox"<?php if ($Specialization == '2') { ?> checked="checked"<?php } ?>  name="Specialization[]" value="spec2"> Фидуциарный сервис и трастовое право 
            </label><br>
            <label>
                <input type="checkbox"<?php if ($Specialization == '3') { ?> checked="checked"<?php } ?>  name="Specialization[]" value="spec3"> Аудит иностранных компаний 
            </label><br>
            <label>
                <input type="checkbox"<?php if ($Specialization == '4') { ?> checked="checked"<?php } ?>  name="Specialization[]" value="spec4"> Бухгалтерское сопровождение бизнеса за рубежом 
            </label><br>
        </td>
    </tr>

<?php } ?>

使用update_user_meta

代码语言:javascript
运行
复制
add_action( 'personal_options_update', 'save_extra_info' );
add_action( 'edit_user_profile_update', 'save_extra_info' );

function save_extra_info( $user_id ) {
    update_user_meta( $user_id, 'Specialization', sanitize_text_field( 
    $_POST['Specialization[]'] ) );
}

如何在数组中存储参数?还会在用户设置中更新和显示。

EN

回答 1

Stack Overflow用户

发布于 2019-10-05 18:14:58

在使用之前,您正在覆盖$specialization数组值。

代码语言:javascript
运行
复制
add_action( 'show_user_profile', 'add_extra_info' );
add_action( 'edit_user_profile', 'add_extra_info' );

function add_extra_info( $user ) { 
    $specialization = get_the_author_meta('specialization',$user->ID,true ); 
?>
    <table class="form-table" role="presentation">
        <tbody>
            <tr>
                <th>Specialization</th>
                <td>
                    <p><label>
                        <input type="checkbox" <?php if( !empty( $specialization ) && in_array( 'spec1', $specialization  ) ) : ?> checked="checked" <?php endif; ?> name="specialization[]" value="spec1"> spec1
                    </label></p>
                    <p><label>
                        <input type="checkbox"  <?php if( !empty( $specialization ) && in_array( 'spec2', $specialization ) ) : ?> checked="checked" <?php endif; ?> name="specialization[]" value="spec2"> spec2 
                    </label></p>
                    <p><label>
                        <input type="checkbox"  <?php if( !empty( $specialization ) && in_array( 'spec3', $specialization ) ) : ?> checked="checked" <?php endif; ?> name="specialization[]" value="spec3"> spec3
                    </label></p>
                    <p><label>
                        <input type="checkbox"  <?php if( !empty( $specialization ) && in_array( 'spec4', $specialization ) ) : ?> checked="checked" <?php endif; ?> name="specialization[]" value="spec4"> spec4
                    </label></p>
                </td>
            </tr>
        </tbody>
    </table>
<?php } 

add_action( 'personal_options_update', 'save_extra_info' );
add_action( 'edit_user_profile_update', 'save_extra_info' );

function save_extra_info( $user_id ) {
    if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }

    $array = array_map( 'sanitize_text_field', wp_unslash( $_POST['specialization'] ) );
    update_user_meta( $user_id, 'specialization',  $array );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58201402

复制
相关文章

相似问题

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