[Users WP edit] agregar fields a un user de wordpress #wordpress #php
<?php
/**
* CEO Date
* @param WP_User $user User object.
*/
function vivaldis_ceo_date($user) {
$months = array(
'01' => 'January',
'02' => 'February',
'03' => 'March',
'04' => 'April',
'05' => 'May',
'06' => 'June',
'07' => 'July',
'08' => 'August',
'09' => 'September',
'10' => 'October',
'11' => 'November',
'12' => 'December');
$ceo_date = array(
'day' => '01',
'month' => '01',
'year' => '2017',
);
$date = get_user_meta($user->ID, 'ceo_date');
if(!empty($date)) {
$date = explode('-', $date[0]);
$ceo_date = array(
'day' => $date[2],
'month' => $date[1],
'year' => $date[0],
);
}
?>
<h3>Extra</h3>
<table class="form-table">
<tr>
<th><label for="ceo-date-day">CEO Date</label></th>
<td>
<select id="ceo-date-day" name="ceo_date[day]"><?php
for ($i = 1; $i <= 31; $i++) {
$formattedDay = sprintf('%02d', $i);
printf('<option value="%1$s" %2$s>%1$s</option>', $formattedDay, selected( $ceo_date['day'], $formattedDay, false ));
}
?></select>
<select id="ceo-date-month" name="ceo_date[month]"><?php
foreach ($months as $key=>$month) {
printf('<option value="%1$s" %2$s>%3$s</option>', $key, selected( $ceo_date['month'], $key, false ), $month);
}
?></select>
<select id="ceo-date-year" name="ceo_date[year]"><?php
for ($i = 2017; $i <= 2018; $i++) {
printf('<option value="%1$s" %2$s>%1$s</option>', $i, selected( $ceo_date['year'], $i, false ));
}
?></select>
</td>
</tr>
</table>
<?php
}
add_action('show_user_profile', 'vivaldis_ceo_date');
add_action('edit_user_profile', 'vivaldis_ceo_date');
/**
* Save CEO Date
* @param int $user_id Current user ID.
*/
function vivaldis_ceo_save_profile_fields( $user_id ) {
if ( ! current_user_can( 'edit_user', $user_id ) ) {
return false;
}
if ( empty( $_POST['ceo_date'] ) ) {
return false;
}
$ceo_date = $_POST['ceo_date']['year'] . '-' .
$_POST['ceo_date']['month'] . '-' .
$_POST['ceo_date']['day'];
update_usermeta( $user_id, 'ceo_date', $ceo_date );
}
add_action( 'personal_options_update', 'vivaldis_ceo_save_profile_fields' );
add_action( 'edit_user_profile_update', 'vivaldis_ceo_save_profile_fields' );
/**
* Internal token
* @param WP_User $user User object.
*/
function vivaldis_internal_token($user) {
$token = uniqid(date('Ymd'), true);
$token = str_replace('.', '', $token);
$token = (empty(get_the_author_meta('internal_token', $user->ID)))? $token : get_the_author_meta('internal_token', $user->ID);
?>
<table class="form-table">
<tr>
<th><label for="internal_token">Internal Token</label></th>
<td><input type="text" value="<?= $token ?>" id="internal_token" name="internal_token" readonly="readonly" style="width: 500px" /></td>
</tr>
</table>
<?php
}
add_action('show_user_profile', 'vivaldis_internal_token');
add_action('edit_user_profile', 'vivaldis_internal_token');
/**
* Save Internal token
* @param int $user_id Current user ID.
*/
function vivaldis_internal_token_save_profile_fields( $user_id ) {
update_usermeta( $user_id, 'internal_token', $_POST['internal_token'] );
}
add_action( 'personal_options_update', 'vivaldis_internal_token_save_profile_fields' );
add_action( 'edit_user_profile_update', 'vivaldis_internal_token_save_profile_fields' );
/**
* Language
* @param WP_User $user User object.
*/
function vivaldis_language($user) {
$languages = array(
'nl' => 'NL',
'fr' => 'FR'
);
$default = 'nl';
$lang = (empty(get_the_author_meta('language', $user->ID)))? $default : get_the_author_meta('language', $user->ID);
?>
<table class="form-table">
<tr>
<th><label for="language">Language</label></th>
<td>
<select id="language" name="language"><?php
foreach ($languages as $key=>$language) {
printf('<option value="%1$s" %2$s>%3$s</option>', $key, selected( $lang, $key, false ), $language);
}
?></select>
</td>
</tr>
</table>
<?php
}
add_action('show_user_profile', 'vivaldis_language');
add_action('edit_user_profile', 'vivaldis_language');
/**
* Save Language
* @param int $user_id Current user ID.
*/
function vivaldis_language_save_profile_fields( $user_id ) {
if ( ! current_user_can( 'edit_user', $user_id ) ) {
return false;
}
if ( empty( $_POST['language'] ) ) {
return false;
}
update_usermeta( $user_id, 'language', $_POST['language'] );
}
add_action( 'personal_options_update', 'vivaldis_language_save_profile_fields' );
add_action( 'edit_user_profile_update', 'vivaldis_language_save_profile_fields' );
/**
* Mail Actions
* @param WP_User $user User object.
*/
function vivaldis_mailing($user) {
?>
<h3>Mail Actions</h3>
<table class="form-table">
<tbody>
<tr>
<th scope="row"><label for="send-announcement">Send Announcement</label></th>
<td>
<input type="button" id="send-announcement" class="button button-primary"
value="Send Announcement" onClick="sendMailing('/sendAnnouncement?user_id=<?= $user->ID ?>', this)" />
<span id="send-announcement-response" class="mail-actions-response-message"></span>
</td>
</tr>
<tr>
<th scope="row"><label for="send-invite">Send Invite</label></th>
<td>
<input type="button" id="send-invite" class="button button-primary"
value="Send Invite" onClick="sendMailing('/sendInvite?user_id=<?= $user->ID ?>', this)" />
<span id="send-invite-response" class="mail-actions-response-message"></span>
</td>
</tr>
<tr>
<th scope="row"><label for="send-reminder">Send Reminder</label></th>
<td>
<input type="button" id="send-reminder" class="button button-primary"
value="Send Reminder" onClick="sendMailing('/sendInviteReminder?user_id=<?= $user->ID ?>', this)" />
<span id="send-reminder-response" class="mail-actions-response-message"></span>
</td>
</tr>
</tbody>
</table>
<?php
}
add_action('show_user_profile', 'vivaldis_mailing');
add_action('edit_user_profile', 'vivaldis_mailing');
/**
* Add column CEO Date & Status
*/
function vivaldis_column_ceodate($column_headers ) {
$column_headers['ceo_date'] = 'CEO Date';
$column_headers['ceo_status'] = 'Status';
unset($column_headers['posts']);
return $column_headers;
}
add_filter( 'manage_users_columns', 'vivaldis_column_ceodate' );
function vivaldis_column_data_ceodate( $val, $column_name, $user_id ) {
switch ($column_name) {
case 'ceo_date' :
return get_the_author_meta( 'ceo_date', $user_id );
break;
case 'ceo_status' :
if(userReplyQuestionnaire($user_id) > 0) {
return '<a href="'. get_bloginfo('url') .'/ceo/'. getUsernameById($user_id) .'" target="_blank">View Answers</a>';
} else {
return '';
}
break;
default:
}
return $val;
}
add_filter( 'manage_users_custom_column', 'vivaldis_column_data_ceodate', 10, 3 );
function userReplyQuestionnaire($user_id) {
$post = get_posts(array(
'author' => $user_id,
'post_type' => 'questionaire',
'posts_per_page' => 1
));
return count($post);
}
function getUsernameById($user_id) {
$user = get_user_by('ID', $user_id);
return $user->data->user_login;
}
/*
* Make CEO Date sortable
*/
function vivaldis_column_sortable_ceodate($column_headers) {
$column_headers['ceo_date'] = 'CEO Date';
return $column_headers;
}
add_filter( 'manage_users_sortable_columns', 'vivaldis_column_sortable_ceodate' );
function vivaldis_column_sort_query_ceodate($user_search) {
global $wpdb,$current_screen;
if ( 'users' != $current_screen->id )
return;
$vars = $user_search->query_vars;
if('CEO Date' == $vars['orderby'])
{
$user_search->query_from .= " INNER JOIN {$wpdb->usermeta} m1 ON {$wpdb->users}.ID=m1.user_id AND (m1.meta_key='ceo_date')";
$user_search->query_orderby = ' ORDER BY UPPER(m1.meta_value) '. $vars['order'];
}
}
add_action('pre_user_query','vivaldis_column_sort_query_ceodate');