使用此函数保存自定义字段类型...?

时间:2011-09-30 作者:user1893

我找到了这篇很棒的文章(right here) 关于创建和保存用户配置文件的自定义字段。问题是它只保存文本字段。我无法保存复选框、收音机或任何其他字段类型。

下面是我在函数中使用的代码。我的主题php:

<?php

add_action( \'show_user_profile\', \'my_show_extra_profile_fields\' );
add_action( \'edit_user_profile\', \'my_show_extra_profile_fields\' );

function my_show_extra_profile_fields( $user ) { ?>


    <h3>Extra profile information</h3>

    <table class="form-table">

        <tr>

            <td>
                <input type="text" name="test" id="test" value="<?php echo esc_attr( get_the_author_meta( \'test\', $user->ID ) ); ?>" class="regular-text" /><br />
            </td>
        </tr>

        <tr>

            <td>
                <input type="checkbox" name="test2" id="test2" value="<?php echo esc_attr( get_the_author_meta( \'test2\', $user->ID ) ); ?>" class="regular-text" /><br />
            </td>
        </tr>

    </table>


<?php } 

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

function my_save_extra_profile_fields( $user_id ) {

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

    /* Copy and paste this line for additional fields. Make sure to change \'twitter\' to the field ID. */
    update_usermeta( $user_id, \'test\', $_POST[\'test\'] );
    update_usermeta( $user_id, \'test2\', $_POST[\'test2\'] );
}

?>
在此示例中,“test”字段保存,但“test2”字段不保存。

是否有人知道如何使用此代码保存不同的字段类型(复选框、收音机、下拉列表等)?

非常感谢!

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

您如何知道复选框值未保存?我猜它会保存到数据库中;但是,在代码中,没有任何方法将复选框的“checked”属性设置为“checked”。因此,您将不会看到已选中的框。

要达到这种效果,您需要以下内容。

<?php $checked = ( get_the_author_meta( \'test2\', $user->ID ) == \'some-value\' ) ? \' checked="checked" : \'\'; ?>
<input type="checkbox" name="test2" id="test2" value="some-value" class="regular-text"<?php echo $checked; ?> /><br />
只需确保将“some value”更改为您想要的值。

结束

相关推荐

在WordPress核心的哪个部分连接了USERS表和USERMETA表?

我一直在试图找出在Wordpress包含类的巨大丛林中,usermeta表是在哪里连接到users表的,如果是,它是如何工作的?usermeta表让我感到困惑的一点是,它对数据库字段使用键/值字段,而不是像first\\u name或last\\u name这样的实际值。Wordpress如何知道默认情况下要提取哪些字段,以及是否有用于从usermeta字段添加和检索数据的挂钩、操作和过滤器?