Пользовательский список пользовательских списков администратора отображается на основе пользовательских метаданных в Wordpress - PullRequest
0 голосов
/ 06 октября 2018

Я создал пользовательский столбец для пользователей WordPress, который называется «Проверка».После регистрации в WooCommerce пользователю отправляется электронное письмо с просьбой подтвердить свою электронную почту и, таким образом, аккаунт.Эта информация хранится в базе данных под usermeta (wp_usermeta) как мета-ключ, и этот ключ называется is_activated.

enter image description here

Вот код длянастраиваемый столбец:

add_action('manage_users_columns','account_verification_status_column');
function account_verification_status_column($column_headers) {
  unset($column_headers['posts']);
  $column_headers['account_verification'] = 'Verification Status';
  return $column_headers;
}

function make_verification_status_column_sortable( $columns ) {
    $columns['account_verification'] = 'Verification Status';
    return $columns;
}
add_filter( 'manage_users_sortable_columns', 'make_verification_status_column_sortable' );

Сейчас я пытаюсь выяснить, как извлечь данные из таблицы usermeta и, в данном случае, meta_key is_activated.Вот что я попробовал:

add_action('manage_users_custom_column', 'account_verification_information', 10, 3);
function account_verification_information($status = '1') {

    global $wpdb;
    $has_user_verified = $wpdb->get_var( $wpdb->prepare(
        "SELECT COUNT(*) FROM $wpdb->users
        LEFT JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id
        WHERE meta_key = 'is_activated'
        AND meta_value = '$status';"
    , $level ));

    return $has_user_verified;
    $check_verification = account_verification_information(1);

  if ( $column_name === account_verification ) {
            echo $check_verification;
            } else {
                echo '<span class="na">Not yet Verified</span>';
            }
    }

Надеемся, что, взглянув на него, вы «поймете».Мне нужно, чтобы он показывал «Verified», если значение равно 1, и «Not Verified», если значение равно 0.

Я пробовал так много разных версий этого, что я теряюсь.

Любая помощь высоко ценится.

1 Ответ

0 голосов
/ 06 октября 2018

Попробуйте вместо этого следующее:

add_action('manage_users_columns','account_verification_status_column');
function account_verification_status_column($column_headers) {
    unset($column_headers['posts']);

    $column_headers['account_verification'] = __('Verification Status');

    return $column_headers;
}

add_filter( 'manage_users_sortable_columns', 'make_verification_status_column_sortable' );
function make_verification_status_column_sortable( $vars ) {
    $columns['account_verification'] = 'account_verification';

    return $columns;
}

add_filter('manage_users_custom_column',  'add_user_column_value', 10, 3);
function add_user_column_value( $value, $column_name, $user_id ){
    if ( 'account_verification' == $column_name ){
        if( get_user_meta( $user_id, 'is_activated', true ) == 1 ){
            $value = '<span style="color:green;font-weight:bold;">Verified</span>';
        } else {
            $value = '<span class="na" style="color:grey;"><em>Not Verified</em></span>';
        }
    }

    return $value;
}

Код находится в файле function.php вашей активной дочерней темы (активной темы).Проверено и работает.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...