Как получить значение из таблицы wp_usermeta в базе данных?

Я создаю одну настраиваемую регистрационную форму и добавляю дополнительные поля адреса, номера мобильного телефона, но все подписчики делают таблицу своей, но как получить столбец адреса значения в моей таблице,

<?php
      global $wpdb;
      // $authors = $wpdb->get_results("SELECT * from $wpdb->usermeta WHERE meta_key = 'wp_capabilities' AND meta_value = 'a:1:{s:10:\"subscriber\";b:1;}'");

      $mysqli=NEW mysqli('localhost','root','','wp1');
      $sql = "SELECT wp_users.ID, wp_users.user_nicename, wp_users.user_email,wp_users.user_registered FROM wp_users INNER JOIN wp_usermeta 
      ON wp_users.ID = wp_usermeta.user_id 
      WHERE wp_usermeta.meta_key = 'wp_capabilities' 
      AND wp_usermeta.meta_value LIKE '%subscriber%' 
      -- AND wp_users.user_email     
      ORDER BY wp_users.user_nicename";
      $result = $mysqli->query($sql);

      // var_dump($resultl);

      // var_dump($result);
          
      echo "<table class='table table-striped table-class' id= 'table-id'>
          <thead>

          <tr>

          <th style='padding:20px;border:1px solid;color:#489ACF;width:150px; '>Email</th>
          <th style='padding:20px;border:1px solid;color:#489ACF; '>Username</th>
          <th style='padding:20px;border:1px solid;color:#489ACF; '>Date</th>
          <th style='padding:20px;border:1px solid;color:#489ACF; '>Address</th>
          <th style='padding:20px;border:1px solid;color:#489ACF; '>Mobileno</th>
          </tr>  <thead>";


     while($rows=$result->fetch_assoc()){
            // $user_email=$rows['user_email'];
            // $user_login=$rows['user_nicename'];
            // $date=$row['user_registered'];
            // $user_id=$rows['ID'];
            // echo $user_id;
            echo "  <tbody> <tr>";

    // echo "<td>" . $row['id'] . "</td>";
            echo "<td style='padding:20px;border:1px solid;color:#489ACF; '>" . $rows['user_email']. "</td>";
            echo "<td style='padding:20px;border:1px solid;color:#489ACF; '>" .$rows['user_nicename']. "</td>";
            echo "<td style='padding:20px;border:1px solid;color:#489ACF; '>" .$rows['user_registered']. "</td>";
            // echo "<td style='padding:20px;border:1px solid;color:#489ACF; '>" .$rows['address']. "</td>";
            // echo "<td style='padding:20px;border:1px solid;color:#489ACF; '>" .$rows['mobile_no']. "</td>";
        
            echo "</tr>  <tbody>";

          }
          echo "</table>";

           
?>

как получить значение и сделать таблицу.... внутреннее соединение работает на полную, но как

1 ответ

Поскольку вы используете wordpress, имеет смысл использовать Wordpress API. Вот как вы находите пользователей по определенным мета-атрибутам:

   $users = get_users(array(
            'meta_key'     => 'wp_capabilities',
            'meta_value'   => 'subscriber',
             ...any other keys => values...
         ));

Если вам нужно получить пользователя по ролям, вы можете получить таких пользователей

$users = get_users( array(
    'role'    => 'subscriber',
    'orderby' => 'user_nicename',
    'order'   => 'ASC'
   ));
...
foreach ( $users as $user ) ...

Таким образом вы получите массив WP_User s. Выполните итерацию массива и извлеките из него все необходимые данные.
Дополнительную информацию можно найти в документации Wordpress о функции, а также об объекте WP_User. Чтобы добавить пользовательские метаданные, вам также необходимо использовать предоставленный wordpress api, это всего лишь образец добавления метаданных, но не правильный метод добавления ролей:

   add_user_meta( $user_id, 'wp_capabilities', 'subscriber', false /*non unique*/ );

Предположим, что указанный выше $user_id вы получили с помощью функции вроде wp_insert_user или любого другого способа получить идентификатор.
Чтобы правильно добавить любые роли, используйте функцию add_role или любые другие функции ролей https://developer.wordpress.org/reference/functions/add_role/

Другие вопросы по тегам