Что такое $wpdb, как он работает, или создаем Обратную связь для WordPress

В прошлом уроке, мы научились заносить данные в таблицу с помощью $wpdb->insert, на примере создания обратной связи для WordPress. В этом уроке, мы рассмотрим, каким образом можно вывести все данные на страницу и как удалить запись.

1. Выводим список записей

Для того чтобы вывести список записей, которые хранятся у нас в таблице feedback, нам нужно создать страницу и файл шаблон для нее.

  • Создаем файл с названием a-feedback.php
  • В начале файла прописываем <?php /* Template Name: Admin-FeedBack*/ ?>, где Admin-FeedBack это название, которое будет отображаться в списке шаблонов страниц.
  • Создаем страницу “Все записи” и выбираем для нее шаблон

Выбор шаблона страницы для wordpress

После того как вы создали страницу, нужно вставить строки, которые будут разрешать странице пользоваться функциями WordPress.


<?php
define('WP_USE_THEMES', false);
require( $_SERVER['DOCUMENT_ROOT'] .'/wp-blog-header.php');
?>

Этот код нужно прописать после того, где мы прописывали название шаблона страницы (т.е. со второй строки).

Когда вы проделали все вышеописанное, нужно вставить каркас шаблона.

  • Скопируйте содержимое single.php
  • Вставьте в a-feedback.php, после всех строк
  • Удалите в каркасе код отвечающий за вывод контента.

Переходим к самому интересному, на данном этапе мы выведем все записи из таблицы feedback.

Внимание! Если в прошлом уроке вы вводили другие названия при создании столбцов, то в данном уроке значения нужно изменить на аналогичные. 

Внутрь вашего каркаса в файле a-feedback.php вставляем код


<?php if (is_super_admin()) { ?> 

<?php
$read = ''; //Адрес страницы с полной записью отзыва. a-read.php
$delete = get_bloginfo('template_url').'/a-delete.php';

$results = $wpdb->get_results("SELECT * FROM feedback");

if ($results) {
 foreach ($results as $result) {
 echo '<div class="result">
 <b>' . $result->name . '</b>' . ' написал(а) отзыв'.' 
 <div class="manage"><a href="'.$read.'&id='.$result->id.'">Прочитать</a>'.' или <a href="'.$delete.'?id='.$result->id.'">Удалить</a></div>
 </div>' ;
 echo '<br>';
 }
 }

?>

<?php } ?>

На данном этапе мы использовали класс $wpdb->get_results, с помощью которого выбрали все значения из таблицы feedback.

И для более менее нормального вида, добавьте один класс в style.css, вы можете стилизовать все на свое усмотрение.


.result {
background:#F0F0F0;
padding:10px;
}

В переменную $read в последующих пунктах мы пропишем адрес страницы.

Если сейчас зайти на страницу, которую мы создали еще в начале первого пункта, то вы должны увидеть список сообщений. Если списка нету, возможно, у вас нету отзывов в базе, чтобы добавить отзывы, добавьте их на странице отзывов, которую мы создавали в прошлом уроке про что такое $wpdb->insert или создаем Обратную связь на примере.

get-feedback

Кнопки “Прочитать” или “Удалить” на данном этапе еще не работают.

2. Страница полной записи отзыва

Чтобы прочитать полный отзыв, администратор должен нажать на кнопку “Прочитать”, после чего попадает на страницу с полным отзывом. Для этого нужно создать данную страницу.

По примеру первого пункта, создаем файл с названием a-read.php.

  • Копируем внутрь содержимое файла a-feedback.php
  • Название шаблона страницы должно отличаться (первая строка), для этого измените его на Admin-FeedBack-Read
  • Удалите все от <?php if (is_super_admin()) { ?>  до <?php } ?> включительно.
  • Вставляем на место удаленных строк

<?php if (is_super_admin()) { ?>

<?php $result = $wpdb->get_row('SELECT * FROM feedback WHERE id ='.$_GET['id'].''); ?>
 <?php
 $back = ''; //Адрес страницы со списком всех отзывов. a-feedback.php
 $delete = get_bloginfo('template_url').'/a-delete.php'; 
 ?>
 <h4>Отзыв пользователя <?php echo $result->name; ?> </h4>
 <div class="info">
 <b>Имя</b> <?php echo $result->name; ?><br>
 <b>Почтовый адрес</b> <?php echo $result->email; ?>
 </div>
 <div class="mail">
 <?php echo $result->content; ?>
 </div>
 <a class="btn" href="<?php echo $back; ?>">Вернуться</a> или <a class="btn" href="<?php echo $delete; ?>?id=<?php echo $_GET['id'];?>">Удалить</a>

<?php } ?>

В данном коде, мы использовали класс $wpdb->get_row, с помощью которого, выбрали конкретную строку за заданным id, который передается методом $_GET из других страниц.

  • В переменную $back прописываем адрес страницы (адрес страницы “Все записи”) из первого пункта.
  • Создаем страницу “Полная запись” через админку, выбираем шаблон страницы по примеру из первого пункта, только название шаблона уже другое Admin-FeedBack-Read. Сохраняем страницу.
  • В файле a-feedback.php, где переменная $read, прописываем адрес страницы, которую мы только что сохранили.

3. Обработчик удаления записей

Ну и последний пункт в данном уроке, в нем мы создадим обработчик удаления записей. Он будет использовать класс $wpdb->query внутри которого мы вызовем функцию DELETE.

  • Создаем файл a-delete.php (если назовете его иначе, нужно будет изменить название в предыдущих файлах)
  • Вначале файла, подключаем возможность использования функций WordPress

<?php
define('WP_USE_THEMES', false);
require( $_SERVER['DOCUMENT_ROOT'] .'/wp-blog-header.php');
header( 'Location: http://ссылка' );
?>

Если вы заметили, данный код отличается от предыдущих, в нем присутствует дополнительная строчка header, она предзначначенна для переадресации на основную страницу. Внутри header, где “http://ссылка” пропишите адрес на основную страницу “Все записи”, которая выводит все записи из базы данных (мы ее создавали в первом пункте).

  • После этого, ниже вставляем класс $wpdb->query с параметром удаления по id, который передается методом $_GET из файлов, которые мы создавали ранее в пунктах 1 и 2.

<?php
$wpdb->query(
 '
 DELETE FROM feedback
 WHERE id = '.$_GET['id'].'
 '
);
?>
<?php } else { ?>
Закрыто! 
<?php if(isset($_GET['id'])){ echo 'Даже не думай!'; } ?>
<?php }?>

Если вы внимательно читали каждый пункт, то все должно работать. Наша обратная связь без плагинов для WordPress готова. Я не ставил за задачу, создать идеальную форму, я хотел на примере показать, как работает $wpdb. Если у вас фантазия бурная, вы на данном этапе наверное понимаете, сколько всего можно сделать с помощью данного класса.

Пишите в комментариях если вдруг вас заинтересует, как сделать навигацию по страницам для главной страницы с отзывами.

Хотите подобный функционал, верстку либо помощь в настройке вашего сайта?
Свяжитесь со мной

Оставить отзыв

(обязательно)

(обязательно)


Наши друзья
- ARTtime - Блог о Photoshop и Дизайн
- Блог о дизайне и арте
Реклама