Создание плагина для WordPress. Часть 2: меню и вывод из базы данных


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

А как вообще попадать на страницу плагина в админке? Правильно, сделать меню. Например, вот такая функция в файле taskmanager.php

function taskmanager_menu()
{
    add_menu_page("Таск-менеджер", "Таск-менеджер", "manage_options","taskmanager", "displayList", "dashicons-email-alt");
}
В нем же пониже её вызываем. Но не просто так, а через хук

add_action("admin_menu", " taskmanager_menu");
Теперь у нас в меню появится вот такой пункт с названием «Таск-менеджер»



Если необходимы подменю, то для их создания используйте функцию add_submenu_page(). Для удаления - remove_submenu_page();

Но перейдя в данный пункт меню, мы ничего не увидим. Необходимо еще кое-что. Параметр displayList в методе taskmanager_menu() – это еще одна функция, которая будет отображать, что выводить на странице. Сделаем её примерно такой

function displayList()
{
    global $wpdb;
    $tablename = $wpdb->prefix."tasks";

    $tasks = $wpdb->get_results("SELECT * FROM ".$tablename." order by dat desc");

    echo "<div><label for='new_task_dat'>Дата</label>";
    echo "<input type='datetime-local' id='new_task_dat' />";

    echo "<div><label for='new_task_name'>Название</label>";
    echo "<input type='text' id='new_task_name' />";

    echo "<div><label for='new_task_description'>Описание</label>";
    echo "<input type='text' id='new_task_description' />";

    echo "<button id='add_task'>Добавить задачу</button>";
    echo "</div>";

    echo "<table id='tasks_table'><tr><th>Дата</th><th>Название</th><th>Описание</th><th>Выполнена</th><th>Действие</th></tr>";
   

    if(count($tasks) > 0){
        foreach($tasks as $task){
            $id = $task->id;
            $name =$task->name;
            $description =$task->description;
            $dat = $task->dat;

            $checked = "";
            if ($task->is_done == "1"){
                $checked = "checked";
            }

            echo "<tr id='tr$id'>
                    <td>
                    <input type='datetime-local'  id='task_dat$id' value='$dat' 
                    </td>
                    <td><input type='text' id='task_name$id' value='$name' /></td>
                    <td><input type='text' id='task_description$id' value='$description' /></td>
                    <td><input type='checkbox' id='task_is_done$id' $checked /></td>
                    <td>
                        <button class='edit_task' data-task_id='$id'>Сохранить изменения</button>
                        <button class='del_task' data-task_id='$id'>Удалить</button>
                    </td>
            </tr>";
        }
    }

    echo "</table>";
}
Код выше - это просто демонстрация, я не стал усложнять, чтобы было более наглядно. В реальной разработке желательно отделять вывод информации от её получения. То есть тут лучше создать две функции - одна вытаскивает из базы данных, вторая формирует html, а потом уже вызывать их по очереди в displayList(). Имейте в виду.

И теперь перейдя в таск-менеджер, мы увидим что-то подобное

Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, wordpress, php, плагин




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Урок 5. Синхронизация в параллельных циклах C#
Простые числа: Решето Эратосфена на C#
Как прокачать Академию в игре Спарта: Война Империй