用户配置文件页面中的下拉列表

时间:2012-04-24 作者:Fraggy

我很难找到这个问题的答案。我需要有一个自定义的用户元字段。

我可以创建它们,这很好,但我需要创建一个下拉列表。

例如,我希望用户元为Unit type,下拉值为Residential和Commercial

这方面的任何帮助都会很好。谢谢

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

谢谢你这么说。只是一个小小的调整,因为第一位代码出现了一个错误。下面是第一个代码块的工作代码。

//hooks
add_action( \'show_user_profile\', \'Add_user_fields\' );
add_action( \'edit_user_profile\', \'Add_user_fields\' );

function Add_user_fields( $user ) { ?>

<h3>Extra fields</h3>
<table class="form-table">
    <tr>
        <th><label for="text">text</label></th>
        <td>
            <?php 
            // get test saved value
            $saved = esc_attr( get_the_author_meta( \'user_text\', $user->ID ) );
            ?>
            <input type="text" name="user_text" id="user_text" value="<?php echo $saved; ?>" class="regular-text" /><br />
            <span class="description">Simple text field</span>
        </td>
    </tr>

    <tr>
        <th><label for="dropdown">dropdown Select field</label></th>
        <td>
            <?php 
            //get dropdown saved value
            $selected = get_the_author_meta( \'user_select\', $user->ID ); //there was an extra ) here that was not needed 
            ?>
            <select name="user_select" id="user_select">
                <option value="value1" <?php echo ($selected == "value1")?  \'selected="selected"\' : \'\' ?>>Value One label</option>
                <option value="value2" <?php echo ($selected == "value2")?  \'selected="selected"\' : \'\' ?>>Value Two label</option>
</select>


            <span class="description">Simple text field</span>
        </td>
    </tr>
</table>
第二部分很好。

add_action( \'personal_options_update\', \'save_user_fields\' );
add_action( \'edit_user_profile_update\', \'save_user_fields\' );

function save_user_fields( $user_id ) {

if ( !current_user_can( \'edit_user\', $user_id ) )
    return false;

//save text field
update_usermeta( $user_id, \'user_text\', $_POST[\'user_text\'] );

//save dropdown
update_usermeta( $user_id, \'user_select\', $_POST[\'user_select\'] );
}

SO网友:Bainternet

同样,如果您知道如何添加文本字段,您也知道如何添加任何其他表单字段,例如:

显示字段:

//hooks
add_action( \'show_user_profile\', \'Add_user_fields\' );
add_action( \'edit_user_profile\', \'Add_user_fields\' );

function Add_user_fields( $user ) { ?>

    <h3>Extra fields</h3>
    <table class="form-table">
        <tr>
            <th><label for="text">text</label></th>
            <td>
                <?php 
                // get test saved value
                $saved = esc_attr( get_the_author_meta( \'user_text\', $user->ID ) );
                ?>
                <input type="text" name="user_text" id="user_text" value="<?php echo $saved; ?>" class="regular-text" /><br />
                <span class="description">Simple text field</span>
            </td>
        </tr>

        <tr>
            <th><label for="dropdown">dropdown Select field</label></th>
            <td>
                <?php 
                //get dropdown saved value
                $selected = get_the_author_meta( \'user_select\', $user->ID ) ); 
                ?>
                <select name="user_select" id="user_select">
                    <option value="value1" <?php echo ($selected == "value1")?  \'selected="selected"\' : \'\' ?>>Value One label</option>
                    <option value="value2" <?php echo ($selected == "value2")?  \'selected="selected"\' : \'\' ?>>Value Two label</option>

                <span class="description">Simple text field</span>
            </td>
        </tr>
    </table>
<?php }
保存字段//挂钩

add_action( \'personal_options_update\', \'save_user_fields\' );
add_action( \'edit_user_profile_update\', \'save_user_fields\' );

function save_user_fields( $user_id ) {

    if ( !current_user_can( \'edit_user\', $user_id ) )
        return false;

    //save text field
    update_usermeta( $user_id, \'user_text\', $_POST[\'user_text\'] );

    //save dropdown
    update_usermeta( $user_id, \'user_select\', $_POST[\'user_select\'] );
}
在这两种情况下,您可以看到,我使用相同的函数将数据存储在数据库中,并从数据库中获取数据,无论它是什么类型的字段。

SO网友:narinder kumar

将其添加到主题中function.php

add_action( \'show_user_profile\', \'Add_user_fields\' );
add_action( \'edit_user_profile\', \'Add_user_fields\' );
function Add_user_fields( $user ) { ?>
    <table class="form-table">
        <tr>
            <th><label for="dropdown">Activate/Deactivate User</label></th>
            <td>
                <?php 
                //get dropdown saved value
                $selected = get_the_author_meta(\'pmpro_email_confirmation_key\', $user->ID); //there was an extra ) here that was not needed 
                ?>
                <select name="user_select" id="user_select">
                    <option value="validated" <?php echo ($selected == "validated")?  \'selected="selected"\' : \'\' ?>>Activate</option>
                    <option value="notvalidated" <?php echo ($selected == "notvalidated")?  \'selected="selected"\' : \'\' ?>>De-Activate</option>
                </select>
            </td>
        </tr>
    </table>
<?php } 

add_action( \'personal_options_update\', \'save_user_fields\' );
add_action( \'edit_user_profile_update\', \'save_user_fields\' );

function save_user_fields( $user_id ) {
    if ( !current_user_can( \'edit_user\', $user_id ) ){
        return false;
    }
    //save dropdown
    update_usermeta( $user_id, \'pmpro_email_confirmation_key\', $_POST[\'user_select\'] );
    }
?>

结束

相关推荐

Track logged in users' visits

是否有方法跟踪登录的用户活动?我想看看谁每天都登录到这个网站,也许还能看到特定的人的登录历史。目前我不知道哪些注册用户正在访问我的网站。这是一个私人家庭网站~20 members 我只是想知道谁在使用它,谁没有使用它。