Add extra field to users

时间:2011-07-13 作者:cnotethegr8

我有这段代码,它将复选框添加到“编辑用户”页面,但当我选中它并刷新页面时,复选框将被取消选中。。。怎么了?

add_action( \'show_user_profile\', \'module_user_profile_fields\' );
add_action( \'edit_user_profile\', \'module_user_profile_fields\' );
function module_user_profile_fields( $user ) 
{ ?>
    <h3>Module Options</h3>

    <table class="form-table">
        <tr>
            <th><label for="module_activation">Module Activation</label></th>
            <td>
                <input id="module_activation" name="module_activation" type="checkbox" value="<?php echo esc_attr( get_the_author_meta( \'module_activation\', $user->ID )); ?>" <?php if ( get_the_author_meta( \'module_activation\', $user->ID ) == 1  ) echo \' checked="checked"\'; ?> />
                <span class="description"><?php _e("Please enter your address."); ?></span>
            </td>
        </tr>
    </table>
<?php }

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

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

    update_usermeta( $user_id, \'module_activation\', $_POST[\'module_activation\'] );
}
编辑

这是我要做的工作。

add_action( \'show_user_profile\', \'module_user_profile_fields\' );
add_action( \'edit_user_profile\', \'module_user_profile_fields\' );
function module_user_profile_fields( $user ) 
{ ?>
    <h3>Module Options</h3>

    <table class="form-table">
        <tr>
            <th><label for="module_activation">Module Activation</label></th>
            <td>
                <input id="module_activation" name="module_activation" type="checkbox" value="1" <?php if ( get_the_author_meta( \'module_activation\', $user->ID ) == 1  ) echo \' checked="checked"\'; ?> />
                <span class="description"><?php _e("Please enter your address."); ?></span>
            </td>
        </tr>
    </table>
<?php }

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

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

    update_usermeta( $user_id, \'module_activation\', $_POST[\'module_activation\'] );
}

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

您的函数从不为该字段定义值,因此当您检查其是否等于1时,您永远不会得到true。

尝试以下操作:

add_action( \'show_user_profile\', \'module_user_profile_fields\' );
add_action( \'edit_user_profile\', \'module_user_profile_fields\' );
function module_user_profile_fields( $user ) 
{ ?>
    <h3>Module Options</h3>

    <table class="form-table">
        <tr>
            <th><label for="module_activation">Module Activation</label></th>
            <td>
                <input id="module_activation" name="module_activation" type="checkbox" value="1" <?php if ( get_the_author_meta( \'module_activation\', $user->ID ) == 1  ) echo \' checked="checked"\'; ?> />
                <span class="description"><?php _e("Please enter your address."); ?></span>
            </td>
        </tr>
    </table>
<?php }

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

function save_module_user_profile_fields( $user_id ) 
{
    if ( !current_user_can( \'edit_user\', $user_id ) ) { return false; }else{
        if(isset($_POST[\'module_activation\']) && $_POST[\'module_activation\'] > 0){
            update_usermeta( $user_id, \'module_activation\', $_POST[\'module_activation\'] );
        }else{
            delete_usermeta($user_id, \'module_activation\');
        }
    }
}

结束

相关推荐

PHP echo inside javascript

我已经在wordpress中安装了jwplayer,并将其显示在单个页面中。php页面。。。按照我的方式,我需要在javascript和I中获得一个自定义字段;我没有运气在那里回应它。我知道你不能在javascript函数中直接运行PHP,因此我在这里问noob问题:)<script type=\'text/javascript\'> jwplayer(\"lbp-inline-href-1\").setup({ \'flashplayer\': \'/wp-content/u