Home / Admin / Εμφάνιση πεδίων User Registration στη λίστα χρηστών του WordPress
Duplicate Snippet

Embed Snippet on Your Site

Εμφάνιση πεδίων User Registration στη λίστα χρηστών του WordPress

Code Preview
php
<?php
/**
 * Save registration fields in custom user meta keys
 * and show them in the WordPress Users list.
 */
add_action('user_register', function ($user_id) {
    if (!$user_id) {
        return;
    }
    $field_map = array(
        'account_type' => 'account_type',
        'afm'          => 'afm',
        'phone_1'      => 'phone_1',
        'mobile_phone' => 'mobile_phone',
    );
    foreach ($field_map as $post_key => $meta_key) {
        if (!isset($_POST[$post_key])) {
            continue;
        }
        $value = $_POST[$post_key];
        if (is_array($value)) {
            $value = implode(', ', array_map('sanitize_text_field', wp_unslash($value)));
        } else {
            $value = sanitize_text_field(wp_unslash($value));
        }
        if ($value !== '') {
            update_user_meta($user_id, $meta_key, $value);
        }
    }
}, 20);
/**
 * Helper: read user meta with fallback keys
 */
function dc_get_user_meta_with_fallback($user_id, $keys = array()) {
    foreach ($keys as $key) {
        $value = get_user_meta($user_id, $key, true);
        if ($value !== '' && $value !== null) {
            return $value;
        }
    }
    return '';
}
/**
 * Add custom columns in Users list
 */
add_filter('manage_users_columns', function ($columns) {
    $new_columns = array();
    foreach ($columns as $key => $label) {
        $new_columns[$key] = $label;
        if ($key === 'email') {
            $new_columns['dc_account_type'] = 'Είδος λογαριασμού';
            $new_columns['dc_afm']          = 'ΑΦΜ';
            $new_columns['dc_phone_1']      = 'Τηλ. Εταιρίας';
            $new_columns['dc_mobile_phone'] = 'Κινητό Υπεύθυνου';
        }
    }
    return $new_columns;
});
/**
 * Fill custom column values
 */
add_filter('manage_users_custom_column', function ($output, $column_name, $user_id) {
    if ($column_name === 'dc_account_type') {
        $value = dc_get_user_meta_with_fallback($user_id, array(
            'account_type',
            'user_registration_account_type',
        ));
        return !empty($value) ? esc_html($value) : '—';
    }
    if ($column_name === 'dc_afm') {
        $value = dc_get_user_meta_with_fallback($user_id, array(
            'afm',
            'user_registration_AFM',
            'user_registration_afm',
        ));
        return !empty($value) ? esc_html($value) : '—';
    }
    if ($column_name === 'dc_phone_1') {
        $value = dc_get_user_meta_with_fallback($user_id, array(
            'phone_1',
            'user_registration_phone_1',
        ));
        return !empty($value) ? esc_html($value) : '—';
    }
    if ($column_name === 'dc_mobile_phone') {
        $value = dc_get_user_meta_with_fallback($user_id, array(
            'mobile_phone',
            'user_registration_mobile_phone',
        ));
        return !empty($value) ? esc_html($value) : '—';
    }
    return $output;
}, 10, 3);
/**
 * Make custom columns sortable
 */
add_filter('manage_users_sortable_columns', function ($columns) {
    $columns['dc_account_type'] = 'dc_account_type';
    $columns['dc_afm']          = 'dc_afm';
    $columns['dc_phone_1']      = 'dc_phone_1';
    $columns['dc_mobile_phone'] = 'dc_mobile_phone';
    return $columns;
});
/**
 * Sorting logic for custom columns
 */
add_action('pre_get_users', function ($query) {
    if (!is_admin() || !$query->is_main_query()) {
        return;
    }
    $orderby = $query->get('orderby');
    if ($orderby === 'dc_account_type') {
        $query->set('meta_key', 'account_type');
        $query->set('orderby', 'meta_value');
    }
    if ($orderby === 'dc_afm') {
        $query->set('meta_key', 'afm');
        $query->set('orderby', 'meta_value');
    }
    if ($orderby === 'dc_phone_1') {
        $query->set('meta_key', 'phone_1');
        $query->set('orderby', 'meta_value');
    }
    if ($orderby === 'dc_mobile_phone') {
        $query->set('meta_key', 'mobile_phone');
        $query->set('orderby', 'meta_value');
    }
});

Comments

Add a Comment