Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Creative Coding

Проводка через интерфейс: редактирование и удаление

by
Difficulty:IntermediateLength:MediumLanguages:

Russian (Pусский) translation by Alex Grigorovich (you can also view the original English article)

Сегодня мы продолжим работу над нашей мини-серией для вставки постов через интерфейс, но в этой части мы рассмотрим исключительно то, как редактировать и удалять посты через интерфейс. Мы расскажем, как отображать все наши сообщения, редактировать и удалять их.  Итак, давайте подготовимся и начнем!


Вступление

Сейчас мы находимся во второй части нашего мини-сериала, и если вы не читали первую часть, то я советую вам сделать это, потому что мы будем брать с того места, где мы остановились.  Наша цель после завершения этого мини-сериала - позволить пользователю отправлять сообщения через интерфейс, а также редактировать и отправлять сообщения в корзину; все без присутствия в панели управления WordPress.  Эти методы могут использоваться как в теме, так и в плагине, и могут быть легко адаптированы для получения очень сложных и сложных представлений.

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

Так что откройте ваш любимый текстовый редактор и начнем!


Шаг 1 Отображение наших сообщений

Мы начнем с более эффективного отображения всех наших сообщений, это позволит нам лучше управлять своими сообщениями и позволит нам выполнять действия с каждым сообщением.  Поскольку мы используем тему для ее разработки, мы создадим шаблон страницы с именем template-view-posts.php.  Кроме того, мы создадим новую страницу с помощью страниц WordPress Dashboard Pages -> Add New -> Page Attributes, чтобы назначить шаблон этой странице.

Теперь у нас есть шаблон страницы и страница, созданные в нашей теме WordPress, и мы можем начать выводить все наши сообщения.  Мы будем создавать очень простую таблицу для вывода всей необходимой информации.  Начните с создания таблицы с некоторыми заголовками, как показано ниже:

Теперь, когда у нас есть таблица, мы можем начинать заполнять строки таблицы информацией о наших публикациях.  Сначала мы сделаем пользовательский цикл WordPress, чтобы убедиться, что мы получаем все сообщения и все статусы сообщений, потому что мы хотим видеть, какие сообщения находятся в состоянии ожидания, черновики, опубликованы или даже отправлены в корзину.  Мы делаем это, вставляя следующий бит кода:

Это наш объект запроса со всеми нашими пользовательскими параметрами, которые мы установили.  Вы можете прочитать обо всех различных параметрах, которые мы можем установить из Кодекса WordPress.  Далее мы запустим наш цикл WordPress сразу после заголовков таблицы, например так:

Brilliant!  У нас есть набор таблиц и цикл WordPress.  Теперь нам просто нужно ввести нашу информацию, которая связана с заголовками нашей таблицы.  Замените наши пустые ячейки таблицы следующим кодом:

Код, который мы только что вставили, сначала начинается с вывода заголовка нашего сообщения, а следующий элемент выводит отрывок нашего сообщения.  Затем мы получаем текущий статус сообщения и передаем идентификатор сообщения этой функции и, наконец, вводим две ссылки «Редактировать» и «Удалить», которые мы будем использовать позже в качестве наших действий. 


Шаг 2 Редактирование наших сообщений

Гениально, мы добиваемся хорошего прогресса.  Мы настроили нашу тему для просмотра всех наших сообщений через интерфейс.  Далее мы собираемся редактировать пост.  Мы начнем с создания другого шаблона страницы с именем template-edit-posts.php.  Кроме того, мы создадим новую страницу с помощью страниц WordPress Dashboard Pages -> Add New -> Page Attributes и назначим шаблон этой странице.

Прежде чем мы начнем редактировать этот шаблон, давайте вернемся к нашему файлу template-view-posts.php и убедимся, что мы передаем идентификатор публикации на URL-адрес, по которому мы получим идентификатор со страницы редактирования.  Мы делаем это с помощью функции WordPress: add_query_arg.  Мы вставим следующий код прямо перед нашей ссылкой Изменить:

Код, который мы только что вставили, сначала устанавливает имя параметра, а затем получает идентификатор сообщения, а затем мы получаем идентификатор шаблона редактирования страницы и добавляем наш пользовательский аргумент URL.  Мы будем использовать это для получения информации в нашем шаблоне редактирования.

Наконец, мы выведем это в нашу ссылку для редактирования, сделав нашу ссылку для редактирования следующим образом:

Теперь, когда мы установили его, когда пользователь нажимает кнопку «Изменить», он переходит к нашему шаблону редактирования с идентификатором поста.  Мы вернемся к нашему файлу template-edit-posts.php и начнем вставлять наш код.

Мы скопируем нашу форму из нашего шаблона-insert-posts.php и вставим ее в наш шаблон редактирования.  Мы копируем следующий код в наш шаблон редактирования и удаляем все значения из наших входных данных и текстовой области, делая нашу форму следующим образом:

Теперь, когда у нас есть установленная форма редактирования страницы, нам нужно будет использовать цикл WordPress, чтобы просмотреть все наши сообщения и найти только те сообщения, которые соответствуют идентификатору сообщения, переданному в наш URL.  Мы сделаем это, запустив цикл WordPress в верхней части нашего файла:

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

Мы только что вставили, чтобы получить параметр URL и проверить его по идентификатору записи, а когда он найдет совпадение, мы присвоим этот идентификатор нашей переменной current_post.  После этого мы вставим некоторый код, чтобы получить нашу информацию относительно нашего поста, вставьте следующий код чуть ниже нашего назначения current_post:

Наш финальный код должен выглядеть так:

Это здорово, мы добиваемся хорошего прогресса.  Теперь, когда у нас есть вся наша информация, нам просто нужно вставить ее в значения формы, это просто, поскольку мы просто назначим значения для обоих наших полей.  Наряду с этим мы будем обновлять название нашей кнопки, чтобы обновить сообщение.  Следующий код является нашей обновленной формой с формой, заполненной заголовком и содержанием сообщения редактирования:

Как вы можете видеть из кода, мы присвоили наше входное значение Post Title для вывода переменной title, а внутри нашей текстовой области мы вывели нашу переменную содержимого, но, как вы могли заметить, когда мы нажимаем Update Post, ничего не происходит, это потому что мы еще не справились с этим, и мы будем делать это сейчас.

Нам нужно будет вернуться к нашему файлу template-insert-posts.php, и мы собираемся скопировать проверку формы PHP в наш Редактировать шаблон.  Теперь, когда мы скопировали проверку формы, мы внесем некоторые изменения и вставим некоторый код.  Нам нужно извлечь переменную current_post в нашей проверке формы, и мы делаем это, устанавливая глобальную переменную, и вставляем это выше нашей проверки:

Далее мы сделаем модификацию нашего массива post_information.  Поскольку мы обновляем наш пост, нам нужно убедиться, что он будет обновлять правильный пост, а не все посты, мы делаем это, вставляя параметр ID в наш массив post_information.  Делаем наш массив следующим образом:

Наконец, мы сделаем одно окончательное изменение, которое будет гарантировать, что мы обновляем публикацию, а не вставляем новую.  Мы делаем это путем простого изменения используемой нами функции, вместо использования wp_insert_post, мы будем использовать wp_update_post.  Делаем наш окончательный код следующим образом:

И это все для редактирования постов через интерфейс. Наконец, для этой части мини-серии мы рассмотрим, как удалять сообщения. Наконец, для этой части мини-серии мы рассмотрим, как удалять сообщения.


Шаг 3 Удаление наших сообщений

Сейчас существует много разных способов удаления сообщений, и было много разных обсуждений лучшего метода, как этого добиться, некоторые люди, возможно, это неправильный метод, но я чувствую, что он отлично работает в данной ситуации.  Мы будем использовать функцию get_delete_post_link.

Мы передадим эту функцию нашей ссылке удаления вместе с передачей идентификатора сообщения следующим образом:

И это так просто, чтобы удалить сообщения через интерфейс.  Мы просто немного расширим это, чтобы гарантировать, что у нас не будет никаких ошибок, и дадим немного больше уведомлений пользователей о том, что мы удаляем сообщение.  Мы делаем это, вставляя очень простую функцию подтверждения в наш onclick, следующим образом:

Наконец, мы обернем условие вокруг нашей ссылки удаления, чтобы гарантировать, что мы можем удалить сообщение, только если текущий статус сообщения еще не находится в Корзине.  Мы делаем это следующим образом:

И это все! Вы можете отправлять сообщения в корзину.  На случай, если вам будет любопытен альтернативный метод удаления сообщений, я объясню это очень кратко.

Этот метод очень прост для редактирования сообщений, путем передачи идентификатора сообщения в URL-адрес вместе с добавлением параметра delete и проверки, является ли значение этого параметра истинным, а если оно истинным, тогда передайте функцию wp_trash_post в ссылку.  Это очень просто и очень эффективно, но для нашей текущей ситуации get_delete_post_link работает отлично.


Заключение

Это часть 2 завершена!  Теперь мы можем вставлять сообщения, редактировать и удалять сообщения через интерфейс.  Мы уже рассмотрели много контента, и в следующей части мы будем копать немного дальше.

В следующей части мы рассмотрим пользовательские поля и многое другое.

Я хотел бы сказать ОГРОМНОЕ спасибо за то, что потратили время на чтение моего урока, надеюсь, это помогло.  Пожалуйста, не стесняйтесь оставлять комментарии, и я сделаю все возможное, чтобы помочь и ответить на них, если нет, вы всегда можете связаться со мной напрямую через мой сайт: www.VinnySingh.co или Twitter @VinnySinghUK

Оставайтесь с нами для части 3!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.