Đôi khi chúng ta cần thêm một field nào đó để lưu thêm thông tin về người dùng (user) trong WordPress, nên hướng dẫn dưới đây sẽ là cách mà chúng ta thêm một trường để lưu Twitter của người dùng và hiển thị nó trên trang web.
Thêm trường mới vào User
Mở file functions.php trong theme và thêm đoạn code bên dưới
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>
<th><label for="twitter">Twitter</label></th>
<td>
<input type="text" name="twitter" id="twitter" value="<?php echo esc_attr( get_the_author_meta( 'twitter', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description">Please enter your Twitter username.</span>
</td>
</tr>
</table>
<?php }
Ta vào trong chỗ user để kiểm tra trường mới được thêm vào chỗ edit và show của User.
Lưu lại giá trị của custom field
Thêm đoạn code dưới vào file functions.php để lưu lại giá trị của trường mới ở trên vào WordPress
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, 'twitter', $_POST['twitter'] );
}
Như vậy trường mới đã được tạo và có thể lưu lại dữ liệu trong WordPress, tiếp theo là cách hiển thị dữ liệu lên site.
Hiển thị custom field của User trên website
WordPress có hai function là the_author_meta() và get_the_author_meta() hỗ trợ cho để lấy dữ liệu từ User.
Dưới đây là đoạn code tạo một box hiển thị thông tin tác giả dưới mỗi bài viết.
Bước 1: Chèn đoạn code dưới vào functions.php để tạo function hiển thị box tác giả
function my_author_box() { ?>
<div class="author-profile vcard">
<?php echo get_avatar( get_the_author_meta( 'user_email' ), '96' ); ?>
<h4 class="author-name fn n">Article written by <?php the_author_posts_link(); ?></h4>
<p class="author-description author-bio">
<?php the_author_meta( 'description' ); ?>
</p>
<?php if ( get_the_author_meta( 'twitter' ) ) { ?>
<p class="twitter clear">
<a href="http://twitter.com/<?php the_author_meta( 'twitter' ); ?>" title="Follow <?php the_author_meta( 'display_name' ); ?> on Twitter">Follow <?php the_author_meta( 'display_name' ); ?> on Twitter</a>
</p>
<?php } // End check for twitter ?>
</div><?php
}
Bước 2: Vào file single.php để hiển thị box tác giả ở bất kì đâu bằng đoạn code
<?php my_author_box(); ?>
Đây là cách làm đơn giản để giúp bạn có thể thêm bất cứ custom field nào vào user của WordPress dễ dàng mà không cần dùng plugin.