我在WordPress用户的配置文件页面中添加了一个名为“uidnumber”的自定义字段,它可以很好地读取数据库中的值,但它不保存任何内容。
如果可以的话,我宁愿将其保存在wp\\u用户中,因为整个表都非常清楚,但是据我所知,WordPress更新可能会删除自定义列。
这是我的functions.php
:
add_action( \'personal_options_update\', \'save_extra_profile_fields\' );
add_action( \'edit_user_profile_update\', \'save_extra_profile_fields\' );
function save_extra_profile_fields( $user_id )
{
update_user_meta( $user_id,\'uidnumber\', sanitize_text_field( $_POST[\'uidnumber\'] ) );
}
这里是字段本身:
<p class="form-row form-row-wide">
<label for="uidnumber"><?php _e( \'UID-Nummer\', \'woocommerce\' ); ?></label>
<input type="text" class="input-text" name="uidnumber" id="uidnumber" value="<?php echo esc_attr( $user->uidnumber); ?>" />
</p>
我不知道为什么它不能保存这个字段,而另一个字段我编码到“
contact_methods
“,很有魅力。
edit01:
我试过了你告诉我的,除非我把它放错地方,否则还是没法保存。
<p class="form-row form-row-wide">
<label for="uidnumber"><?php _e( \'UID-Nummer\', \'woocommerce\' ); ?></label>
<input type="text" class="input-text" name="uidnumber" id="uidnumber" value="<?php echo get_user_meta( $user->ID, \'uidnumber\', true ); ?>" />
</p>
还是你想把它放在我的保存功能中?(正如你提到的价值,我假设不是这样)
edit02: 我认为我的主要问题是,在我的情况下,您在“show”函数中指定的内容实际上在另一个文件中:form-edit-account.php
所以我不能只使用“show\\u extra\\u profile\\u fields”功能。
Also one thing that seems to be misunderstood: 我希望用户(WordPress上的普通用户)能够添加自己的文本。这是我这么做的唯一原因。就个人而言,我可以在后端添加一个UID号码。然而,这意味着我必须自己找出每个用户的UID。
edit03:
functions.php - 这里只有最后几行是实际相关的。
form-edit-account.php
SO网友:Webloper
你还没有提供完整的代码,所以不知道你错在哪里,这个脚本对我来说很好。
add_action( \'personal_options_update\', \'save_extra_profile_fields\' );
add_action( \'edit_user_profile_update\', \'save_extra_profile_fields\' );
function save_extra_profile_fields( $user_id )
{
if ( current_user_can(\'edit_user\',$user_id) )
update_user_meta($user_id, \'uidnumber\', sanitize_text_field($_POST[\'uidnumber\']));
}
add_action(\'show_user_profile\', \'show_extra_profile_fields\');
add_action(\'edit_user_profile\', \'show_extra_profile_fields\');
function show_extra_profile_fields( $user )
{
?>
<p class="form-row form-row-wide">
<label for="uidnumber"><?php _e( \'UID-Nummer\', \'woocommerce\' ); ?></label>
<input type="text" class="input-text" name="uidnumber" id="uidnumber" value="<?php echo get_user_meta( $user->ID, \'uidnumber\', true ); ?>" />
</p>
<?php
}
EDIT : For frontend code
您必须通过以下方式保存uidnumber
update_user_meta
这是代码
global $user;
$user = wp_get_current_user();
if ( $_POST ) {
update_user_meta( $user->ID, \'uidnumber\', sanitize_text_field($_POST[\'uidnumber\']) );
}
编辑2:
personal_options_update
操作仅在管理部分有效,您必须将该代码放入前端检查
pastebin
- sanitize_text_field
- show_user_profile
- edit_user_profile
- personal_options_update
- edit_user_profile_update