Wordpress has several hooks which help developers write custom code that can modify various parts of internal data at runtime. In this short read, I am going to use a hook to add a new column to the worpress profile page.
- I generated the extra field code from this useful website Link, you can do same or copy the code here.
<?php
/*
Plugin Name: #Extra Plugin
Plugin URI: https://www.sufyan.in/
Description: This plugin code is generated by Sufyan Code Generator.
Version: 1.0.0
Author: Sufyan
Author URI: https://www.sufyan.in/code-generator/
License: GPLv2 or later
Text Domain: sufyan
*/
add_action( 'personal_options_update', 'save_extra_user_profile_fields_eaq' );
add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields_eaq' );
function save_extra_user_profile_fields_eaq( $user_id ) {
if(!current_user_can( 'edit_user', $user_id ) ) {
return false;
}
update_user_meta($user_id, 'trade', $_POST["trade"]);
update_user_meta($user_id, 'deposit', $_POST["deposit"]);
update_user_meta($user_id, 'withdraw', $_POST["withdraw"]);
}
add_action( 'show_user_profile', 'extra_user_profile_fields_eaq' );
add_action( 'edit_user_profile', 'extra_user_profile_fields_eaq' );
function extra_user_profile_fields_eaq( $user ) {
$user_id = $user->ID;
?>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.4.0.js"></script>
<h3>Extra profile information</h3>
<table class="form-table">
<tr>
<td>Trade</td>
<td><input type="number" name="trade"autocomplete="off">
</td>
</tr>
<tr>
<td>Deposit</td>
<td><input type="number" name="deposit"autocomplete="off">
</td>
</tr>
<tr>
<td>Withdraw</td>
<td><input type="number" name="withdraw"autocomplete="off">
</td>
</tr>
</table>
<script type="text/javascript">
$('input').addClass('regular-text');
$('input[name=trade]').val('<?php echo get_the_author_meta('trade', $user->ID); ?>');
$('input[name=deposit]').val('<?php echo get_the_author_meta('deposit', $user->ID); ?>');
$('input[name=withdraw]').val('<?php echo get_the_author_meta('withdraw', $user->ID); ?>');
// Hide some default options //
/*
$('.user-url-wrap').hide();
$('.user-description-wrap').hide();
$('.user-profile-picture').hide();
$('.user-rich-editing-wrap').hide();
$('.user-admin-color-wrap').hide();
$('.user-comment-shortcuts-wrap').hide();
$('.show-admin-bar').hide();
$('.user-language-wrap').hide();
//*/
</script>
<?php
}
function new_modify_user_table_eaq( $column ) {
$column['trade'] = 'Trade';
$column['deposit'] = 'Deposit';
$column['withdraw'] = 'Withdraw';
return $column;
}
add_filter( 'manage_users_columns', 'new_modify_user_table_eaq' );
function new_modify_user_table_row_eaq( $val, $column_name, $user_id ) {
$meta = get_user_meta($user_id);
switch ($column_name) {
case 'trade' :
$trade = $meta['trade'][0];
return $trade;
case 'deposit' :
$deposit = $meta['deposit'][0];
return $deposit;
case 'withdraw' :
$withdraw = $meta['withdraw'][0];
return $withdraw;
default:
}
return $val;
}
add_filter( 'manage_users_custom_column', 'new_modify_user_table_row_eaq', 10, 3 );
The function above is a custom plugin generated from this website Link, add the code to the wp plugin folder. it must be activated on the dashboard to work.
- Add this PHP code on top of the page you want to call the extra field values stored in variables.
$trade = get_user_meta( get_current_user_id(), 'trade', true );
$deposit = get_user_meta( get_current_user_id(), 'deposit', true );
$withdraw = get_user_meta( get_current_user_id(), 'withdraw', true );
- Finally call the variables like so on your desired page eg. dashboard when a user is logged in
<?php echo $trade; ?>
. I will be glad to here your views or questions in the comment section.
Top comments (0)