我想在用户注册中添加一个新字段。我在用这个tutorial by Paul Underwood.
本教程可以使用,但我想将输入文本切换到我知道如何操作的文本区域。问题是确保WordPress正确保存此信息。
我意识到这是因为sanitize_text_field( $_POST[\'facebook_profile\'] )
我正试图找到一种方法来为textarea而不是文本字段完成同样的事情,但我没有找到任何东西(我理解。我是一名新的PHP开发人员)。如何保存textarea信息?
下面是我使用的确切代码:
add_action( \'show_user_profile\', \'add_extra_social_links\' );
add_action( \'edit_user_profile\', \'add_extra_social_links\' );
function add_extra_social_links( $user )
{
?>
<h3>Additional Information</h3>
<table class="form-table">
<tr>
<th><label for="facebook_profile">Facebook Profile</label></th>
<td><input type="text" name="facebook_profile" value="<?php echo esc_attr(get_the_author_meta( \'facebook_profile\', $user->ID )); ?>" class="regular-text" /><BR><span class="description">Please enter your Twitter username.</span></td>
</tr>
</table>
<?php
}
get_the_author_meta( $field, $userID );
update_user_meta( $user_id, $meta_key, $meta_value, $prev_value );
add_action( \'personal_options_update\', \'save_extra_social_links\' );
add_action( \'edit_user_profile_update\', \'save_extra_social_links\' );
function save_extra_social_links( $user_id )
{
update_user_meta( $user_id,\'facebook_profile\', sanitize_text_field( $_POST[\'facebook_profile\'] ) );
}
SO网友:Bordoni
您的问题有两种解决方案,其中一些会给您带来更大的灵活性,另一些会使现场更安全。
我喜欢使用wp_kses_post
最重要的是,因为它只允许您在帖子中接受的HTML,但是如果您想删除所有HTML标记,您可以使用wp_kses( $string_unsafe, array() )
.
您也可以使用上面引用的经过消毒的输入法,但可以逐行使用它来提供您想要的解决方案。
// When dealing with user input always cast the input as you expect it to be
$lines = explode( "\\n", (string) $_POST[\'facebook_profile\'] );
// Apply the method
$lines = array_map( \'sanitize_text_field\', (array) $lines );
update_user_meta( $user_id,\'facebook_profile\', implode( "\\n", $lines );
As it was pointed below — Going with the answer above might not be the best option, but it\'s a solution that you can consider.