最近更新时间4月15凌晨1点21

写这篇之前我本人对于wordpress的代码一点都不懂,方案实现全靠搜索,我相信我遇到的问题已经有人遇到过了,但是搜完各大网站后发现国内网站写的内容似乎都是抄来抄去的。

我也找过一些相关插件,可以说搜到的全都用过了,不是要收费就是不符合我的预期的,当然收费的也不符合我的预期。

当然我没有放弃!

终于用最喜欢的搜索引擎bing的国际版最终找到了我想要的答案,虽然有些部分还没改,已经达到我的目的了!!!

以下方法综合网上无数能搜索到的资料写成,会逐渐修改完善,方便以后使用。

想法

在用户列表最后一列以及后台处的编辑个人资料位置添加一个phone的字段,以便联系用户

并在前台用户个人资料页面中实现增删改

1.后台

你的主题或子主题的function.php文件中添加

添加新的一列(这一小段只是一个标签没有实际意义)

function column_user($columns) {
$columns['phone_number'] = 'Phone';
return $columns;
}
add_filter('manage_users_columns', 'column_user');

为了让它有意义,我们必须对其进行改动

而想要在后台编辑则需要继续添加一些(这里写中文会出错,还不知道怎么回事)

function new_contact_methods( $contactmethods ) {
$contactmethods['phone'] = 'Phone Number';
return $contactmethods;
}
add_filter( 'user_contactmethods', 'new_contact_methods', 10, 1 );
function new_modify_user_table( $column ) {
$column['phone'] = 'Phone';
return $column;
}
add_filter( 'manage_users_columns', 'new_modify_user_table' );
function new_modify_user_table_row( $val, $column_name, $user_id ) {
switch ($column_name) {
case 'phone' :
return get_the_author_meta( 'phone', $user_id );
default:
}
return $val;
}
add_filter( 'manage_users_custom_column', 'new_modify_user_table_row', 10, 3 );

在后台编辑界面也就有了这个自定义的字段

但是不想让用户进入后台修改

那么需要写一个前台的用户profile,让用户在前台就可以修改个人信息

2.前台

我们来创建一个模板文件就叫userprofile.php

然后新建一个页面,选择该模板,访问该页面所见成品图如下,当然这个没有写上面自定义的字段,有空再改改

需要写入一些代码来获取当前用户以及允许更改信息。(这里是网上搜到的,我忘记在哪找到的了,应该是个论坛)

<?php
/**
Template Name: User Profile
*
Allow users to update their profiles from Frontend.
*
*/
/* Get user info. */
global $current_user, $wp_roles;
//get_currentuserinfo(); //deprecated since 3.1
/* Load the registration file. */
//require_once( ABSPATH . WPINC . '/registration.php' ); //deprecated since 3.1
$error = array();
/* If profile was saved, update profile. */
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == 'update-user' ) {
/* Update user password. */
if ( !empty($_POST['pass1'] ) && !empty( $_POST['pass2'] ) ) {
if ( $_POST['pass1'] == $_POST['pass2'] )
wp_update_user( array( 'ID' => $current_user->ID, 'user_pass' => esc_attr( $_POST['pass1'] ) ) );
else
$error[] = __('The passwords you entered do not match. Your password was not updated.', 'profile');
}
/* Update user information. */
if ( !empty( $_POST['url'] ) )
wp_update_user( array( 'ID' => $current_user->ID, 'user_url' => esc_url( $_POST['url'] ) ) );
if ( !empty( $_POST['email'] ) ){
if (!is_email(esc_attr( $_POST['email'] )))
$error[] = ('The Email you entered is not valid. please try again.', 'profile'); elseif(email_exists(esc_attr( $_POST['email'] )) != $current_user->id ) $error[] = ('This email is already used by another user. try a different one.', 'profile');
else{
wp_update_user( array ('ID' => $current_user->ID, 'user_email' => esc_attr( $_POST['email'] )));
}
}
if ( !empty( $_POST['first-name'] ) )
update_user_meta( $current_user->ID, 'first_name', esc_attr( $_POST['first-name'] ) );
if ( !empty( $_POST['last-name'] ) )
update_user_meta($current_user->ID, 'last_name', esc_attr( $_POST['last-name'] ) );
if ( !empty( $_POST['description'] ) )
update_user_meta( $current_user->ID, 'description', esc_attr( $_POST['description'] ) );
/* Redirect so the page will show updated info.*/
/*他说他不是这串代码的作者- 不知道这串代码为啥有用 if ( count($error) == 0 ){ */

if ( count($error) == 0 ) {
//action hook for plugins and extra fields saving
do_action('edit_user_profile_update', $current_user->ID);
wp_redirect( get_permalink() );
exit;
}
}
?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>
    <div id="post-<?php the_ID();?>">
        <div class="entry-content entry">
            <?php the_content(); ?>
            <?php if ( !is_user_logged_in() ) : ?>
                    <p class="warning">
                <?php _e('You must be logged in to edit your profile.', 'profile'); ?>
                    </p><!--warning-->
             <?php else : ?>
                 <?php if ( count($error)> 0) echo '<p class="error">' . implode("<br />" , $error) . '
'; ?>
                 <form method="post" id="adduser" action="<?php the_permalink();?>">
                     <p class="form-username">
                        <label for="first-name"><?php _e('First Name','profile');?></label>
                        <input class="text-input" name="first-name" type="text" id="first-name" value="ID ); ?>"/>
//未完

3.综合上述方式实现最终目标

4.修改css