добавление пользовательской строки с данными в базу данных WordPress - PullRequest
1 голос
/ 06 февраля 2020

Я не могу добавить новую строку в wp_usermeta базы данных WordPress. У меня есть этот код в моем плагине, я захожу в базу данных и пытался сохранить данные в форме на панели администратора. У меня есть следующий код:

function kpam_application_management_Users()
{
        global $wpdb;
    $results = $wpdb->get_results("SELECT * FROM wp_users");
    echo '

<h2>Applicants</h2>
<table style="margin-left:10px;margin-top:10px;">
  <tr>
  <th>ID</th>
    <th>Username</th>
    <th>Email</th>
    <th>Progress</th>

  </tr>';
    foreach( $results as $user_data) {
        echo "<tr>
    <td>$user_data->ID</td>
    <td>$user_data->user_nicename</td>
    <td>$user_data->user_email</td>
    <form method=POST action=>
    <td><input type=number name=progressz>
<button id=btnConfirm type=submit name=button >Update</button>
    </td>
    </form>

  </tr>";
}
    echo '</table> <br><br>';

if ( isset( $_POST['button'] ) ){
         global $wpdb;
         $tablename = $wpdb->prefix.'usermeta';

        $wpdb->insert( $tablename, array(
            'user_id' => 1,
            'meta_key' => 'progress',
            'meta_value' => $_POST['progressz']), 

            array( '%s','%s','%s') 

       );


    }
}

1 Ответ

0 голосов
/ 07 февраля 2020

Пара вещей:

Во-первых, почему вы выполняете $wpdb запросы для этого вместо использования вспомогательных функций WordPress, таких как get_users() или WP_User_Query класс и update_user_meta() функция для хранения представленной информации?

Во-вторых, вы должны убедиться, что ваш код правильно отформатирован в стандартном синтаксисе, чтобы его было проще обновлять и поддерживать (а не эхом гигантские блоки HTML, как это) - будущее вам спасибо!

В-третьих, вы просто запускаете код if ( isset( $_POST['button'] ) ){ прямо здесь? Вы, вероятно, должны где-то подключить его и использовать одну из WordPress 'многих nonce функций вместо того, чтобы полагаться на произвольную обычно называемую кнопку.

Тем не менее, я очистил ее немного и использовал вспомогательную функцию, но что-то вроде этого должно приблизить вас к тому, что вы ищете:

function kpam_application_management_users(){ ?>
    <h2>Applicants</h2>
    <table style="margin-left:10px;margin-top:10px;">
        <tr>
        <th>ID</th>
            <th>Username</th>
            <th>Email</th>
            <th>Progress</th>
        </tr>
        <?php
            $users = get_users();

            foreach( $users as $user ){ ?>
                <tr>
                    <td><?php echo $user->ID; ?></td>
                    <td><?php echo $user->user_nicename; ?></td>
                    <td><?php echo $user->user_email; ?></td>
                    <td>
                        <form method="POST">
                            <input type="hidden" name="user_id" value="<?php echo $user->id; ?>" />
                            <input type="number" name="progressz" placeholder="<?php echo get_user_meta( $user->ID, 'progressz', true ); ?>" />
                            <button id="btnConfirm" type="submit" name="progressz-submit">Update</button>
                        </td>
                    </form>
                </tr>
            <?php }
        ?>
    </table>
<?php }

if( isset( $_POST['progressz-submit'] ) ){
    update_user_meta( $_POST['user_id'], 'progressz', $_POST['progressz'] );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...