TechBlogSD - Все для WordPress и WEB разработки
WEB и WordPress инструкции, новости, обзоры тем и плагинов

Управление сообщениями WordPress с помощью PHP – Создание и обновление

351

Как и было обещано, вот вторая часть моего первого поста «Создание постов и страниц WordPress с помощью PHP – 101 учебник». В этой статье мы рассмотрим, как мы можем расширить базовые функции и теорию, которые я обсуждал в части 1, для создания надежного и, в конечном итоге, надежного класса PHP-оболочки.

Как всегда, я сочувствую тем из вас, кто просто хочет погрузиться прямо в код. Вы можете найти его в одном из моих репозиториев на Github (это было немного слишком долго, чтобы вставить непосредственно в эту статью!).

Управление сообщениями WordPress с помощью PHP - Создание и обновление

Чего мы хотим добиться:

  • Полнофункциональный и надежный PHP-фреймворк производственного уровня.
  • Уметь управлять не только созданием сообщений, но также управлять и обновлять уже существующие сообщения.
  • Уметь искать и управлять сообщениями по их; Я БЫ; Заголовок или слаг.

Эта статья будет состоять из двух разделов: примечания по использованию и пошаговое руководство.

Без лишних слов, приступим!

ПРИМЕНЕНИЕ

Прежде всего, убедитесь, что вы либо включили файл class.postcontroller.php из Github, либо вставили его содержимое в свой PHP-документ. Без него ничего не получится! Мы рассмотрим код в этом файле во второй половине этого руководства.

Создайте экземпляр класса следующим образом:

$Poster = new PostController;

Пост-контроллер работает так; вы устанавливаете атрибуты сообщения с помощью соответствующих функций. Затем вы либо создаете, либо обновляете сообщение. Чтобы обновить сообщение, вам нужно сначала найти и найти тот, который нужно обновить. Звучит достаточно просто?

УСТАНОВИТЬ АТРИБУТЫ

Заголовок
Устанавливает заголовок сообщения. HTML здесь не допускается, и он исключен.

Type
Этот метод устанавливает тип сообщения на странице. Введите слаг типа сообщения, например. “сообщение” и “страница”. Поддерживаются пользовательские типы сообщений.

Content
Этот метод устанавливает содержание сообщения. HTML разрешен.

Автор
Устанавливает автора сообщения. Просто укажите ID нового автора. Это должно быть целое число.

Slug / ‘Name'
Это настраиваемый URL-адрес сообщения (если он включен). Позаботьтесь об этом, так как если слизняк уже используется, это может вызвать некоторые ошибки. Я включил валидацию, чтобы попытаться избежать этого любой ценой. Использование специальных символов или HTML не допускается.

Шаблон (только для страниц)
Этот метод позволяет вам установить шаблон вашей страницы (это должна быть страница). Если применить к другому типу поста, он будет проигнорирован, а ошибка будет добавлена ​​в массив ошибок. Формат ввода будет «php_template_name.php» и будет уникальным для каждой темы.

State
Этот метод устанавливает состояние сообщения. Доступные Варианты;
[‘черновик' | ‘опубликовать' | «в ожидании» | «будущее» | «частный» | пользовательский зарегистрированный статус]

СОЗДАЙТЕ

Минимальные требования для создания сообщения – это установить заголовок. Вы можете сделать это, используя следующий код;

После того, как это будет установлено, просто запустите метод create.

Примечание. Метод проверит, есть ли еще один пост с таким же именем (просто чтобы убедиться, что он не дублирует). Следовательно, требуется уникальный заголовок.

ПОИСК

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

Для этого воспользуемся методом поиска.

Этот метод принимает 2 параметра: атрибут для поиска и данные для поиска.

Вы можете искать по названию ;

Вы можете искать по ID ;

И вы можете искать по слагам ;

Параметр данных принимает либо строку (при поиске по заголовку или слагу), либо целое число (при поиске по идентификатору). Если сообщение или страницу с указанными параметрами найти не удается, в массив $ errors будет добавлена ошибка. Вы можете вызвать и отобразить это с помощью следующего кода.

ОБНОВИТЬ

Как только сообщение будет найдено, вы можете назначить ему новые атрибуты. После установки атрибутов просто вызовите метод обновления.

Например, если вы хотите изменить заголовок сообщения 1 (ID = 1), вы должны использовать следующий код.

Таким образом можно обновить все атрибуты.

ПОЛУЧЕНИЕ ПЕРЕМЕННЫХ

Чтобы получить определенные переменные, вы можете использовать метод get_vars.

Вот это! Если у вас есть какие-либо вопросы по использованию, вы можете задать мне их в комментариях здесь. Если вы обнаружите ошибку, сообщите мне об этом на Github.

Готовы ко второй части?

ПОСТРОЕНИЕ КЛАССА: ПОШАГОВОЕ РУКОВОДСТВО

Теперь мы увидели, как использовать класс, вернемся к началу.
Наш класс будет называться PostController ;

class PostController {. .. class functions go here. .. }

Для тех из вас, кто плохо разбирается в классах PHP, класс определяется как объект, содержащий набор функций и переменных, которые работают вместе. Ознакомьтесь с введением PHP.net для получения дополнительных сведений о синтаксисе и теории, которые мы будем использовать для создания нашей структуры. Следующим в нашем списке дел является объявление всех переменных, которые мы будем использовать.

// Variables for Post Data public $PC_title; public $PC_type; public $PC_content; public $PC_category; public $PC_template; public $PC_slug; public $PC_auth_id; public $PC_status = "publish"; // Variables for Post Updating public $PC_current_post; public $PC_current_post_id; public $PC_current_post_permalink; // Error Array public $PC_errors;

Итак, давайте разделим это на три блока. Первый блок будет содержать данные публикации, которые ВЫ указали. Это будут данные, которые будут использоваться для обновления и создания сообщения (когда мы дойдем до него). Хотя вы, вероятно, можете догадаться по именам переменных, вот список данных, которые мы хотим сохранить.

  1. заглавие
  2. Тип (страница / сообщение и т.д. )
  3. Содержание
  4. Категория / Категории
  5. Шаблон страницы
  6. Slug
  7. ID автора и
  8. Статус сообщения (например, опубликовано / черновик)

Второй блок будет содержать фактические данные записи WordPress, которые будет возвращать наш поисковый запрос (или данные о созданной записи после ее создания). Переменная $ PC_current_post будет содержать объект всего сообщения. Он содержит все данные о публикации, включая (что важно) данные, перечисленные выше. Точно так же переменные Post ID и Permalink будут содержать эти данные о существующей публикации.

Третий и последний блок содержит только одну переменную: массив ошибок. Если проблема обнаруживается в известной точке «защемления», сообщение о проблеме будет добавлено в этот массив для вашей справки. Обратите внимание, что я добавил «PC_» просто по хорошей привычке: имена переменных никогда не должны быть двусмысленными. PC означает «PostController». Если вы измените это, не забудьте также изменить префикс в функции get_var().

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

Для тех из вас, кто читал часть 1 этой серии: Создание сообщений и страниц WordPress с помощью PHP – Учебник 101, эта функция будет вам знакома. Это просто законченная функция из этого руководства после адаптации к новой настройке. Чтобы прочитать объяснение этой конкретной функции, я бы рекомендовал проверить часть 1. Единственное существенное отличие самой функции состоит в том, что вместо добавления функции в заголовок WordPress она запускается немедленно.

В качестве быстрого прогона функция проверяет, установлен ли заголовок (это минимальное требование для создания публикации). Затем он проверяет существующее сообщение (по заголовку). Если сообщение найдено, сообщение добавляется в массив ошибок, а управление передается функции update (). Если сообщение с таким заголовком не найдено, то $ post_data используется для создания нового сообщения. Переменная Current Post (а также две другие переменные данных) обновляются для хранения данных этого нового сообщения. Это удобно для проверки только что сделанного сообщения. Если есть проблемы, то в массив $ errors добавляется сообщение .

Извините, если это было немного быстро: если вы немного запутались, я рекомендую вам ознакомиться с моей статьей 101 по этому поводу.

Для всех вас, которые все еще со мной, давайте продолжим.

Это довольно просто. Создать () и обновление () функции как использовать локальные переменные в качестве источника своих данных. Поэтому нам нужен способ установить эти данные. Как видно выше, установлены первые 5 переменных. «А как насчет остальных трех?» – спросите вы. Не волнуйтесь, вот они, но вы увидите, что есть небольшая проверка для проверки их входных данных (для максимальной надежности).

Последние три немного сложнее, но очень важны, чтобы избежать ужасных ошибок.

set_post_slug ()

Set_post_slug () функция является то, что вам нужно быть очень осторожным с. Слаг сообщения – это, по сути, строка, добавляемая в конец базового URL-адреса для создания индивидуального адреса сообщения. Он также используется WordPress в качестве основного идентификатора публикации. Например. Слаг этого сообщения – «manage-wordpress-posts-php-create-update». Он добавляется в конец базового URL-адреса http://wpexplorer.com/ для создания уникального URL-адреса этой статьи: http://www.wpexplorer.com/manage-wordpress-posts-php-create-update/. Я уверен, вы можете представить себе проблемы, с которыми вы столкнулись бы, если бы несколько сообщений имели одинаковый слаг (и, следовательно, URL). Это действительно неприятный беспорядок, которого лучше избегать, если это вообще возможно.

Post Slug ДОЛЖЕН быть УНИКАЛЬНЫМ

Это причина проверки. Что происходит, так это то, что функция ищет сообщения с указанным слагом. Если ничего не найдено И нет страниц с этим в качестве пути (по сути, так же, как и слаг в этом контексте), тогда отлично! Установите переменную. В противном случае в массив $ errors добавляется ошибка и переменная не устанавливается (функция возвращает логическое значение FALSE).

set_page_template () и add_category ()

set_page_template () назначает шаблон страницы (в форме my_page_template.php) Странице и только странице. Проверка здесь просто проверяет, установлен ли тип сообщения как «страница». Если это правда, сохраните данные. Если нет, не беспокойтесь.

add_category () позволяет добавлять массив целых чисел в категории сообщения (он все еще должен быть в массиве, даже если добавляется только одно число). Целые числа представляют идентификаторы категорий. Проверка просто проходит по указанному вами массиву, проверяя, что каждая ячейка имеет целочисленное значение. Если ячейка имеет целочисленное значение, она добавляется в массив основных категорий. Если нет, то она игнорируется, и в массив ошибок добавляется ошибка. Гениально! Теперь мы можем назначить все необходимые нам переменные.

SEARCHING

В начале этого урока мы сказали, что хотим создать систему, которая может обновлять существующие сообщения WordPress. Чтобы это стало возможным, нам сначала нужно найти сообщение, которое мы хотим отредактировать. Для этого воспользуемся функцией search ().

Это функция search (). Я использую оператор PHP Switch (другая форма операторов IF, которые в этом случае будут более эффективными, чем несколько вложенных If. Подробнее о Switch в руководстве по PHP.net Функция search () принимает 2 параметра;

1 Значение “Поиск по”
2 Данные для поиска

Из приведенного выше кода видно, что существует 3 параметра «Поиск по»; “id”, “title” и “slug”. Давайте рассмотрим каждую из них более внимательно.

ПОИСК ПО ID

Это самый простой метод поиска, требующий всего лишь знания целочисленного идентификатора сообщения. Если указанные данные являются целыми числами, функция отправит запрос в вашу базу данных WordPress (с помощью встроенной функции get_post ()). Если сообщение с таким целым числом существует, то объект сообщения будет возвращен и сохранен в переменной PC_current_post (а также сохранены идентификатор и постоянная ссылка). Просто!

ПОИСК ПО НАЗВАНИЮ

Я не думаю, что это действительно требует особого объяснения: это почти то же самое, что поиск по идентификатору, но вместо этого поиск сообщения выполняется по его заголовку. Если у вас есть записи / страницы с одинаковыми именами (что я не рекомендую ), то будет выбрано сообщение с наименьшим идентификатором. Если вы знаете, что у вас есть сообщения с одинаковыми именами, не используйте этот метод, чтобы избежать путаницы. Обратите внимание: вы увидите этот код;

$post = get_page_by_title( $data ); if (! $post) { $post = get_page_by_title( $data, OBJECT, 'post' ); }

Причина, по которой мы должны это сделать, заключается в том, что, хотя get_page_by_title () может возвращать данные как для сообщений, так и для страниц, он будет возвращать только страницы, если третий параметр не указан как ‘post'.

Я не хочу констатировать очевидное, но я понимаю, что если вы выполняете поиск по заголовку и одновременно меняете заголовок, код можно будет запустить только один раз (в первый раз). После этого он вернет ошибку 404 Not Found.

ПОИСК ПО SLUG

Это приятный и надежный метод поиска сообщений. Не должно быть двусмысленности, потому что, как я сказал ранее, слаг должен быть уникальным. Загляните в раздел SET_POST_SLUG (), если вы не понимаете, что я имею в виду под словом «slug». Для этого нам просто нужно было запустить запрос сообщений WordPress, чтобы найти сообщения с определенным слагом. Мы можем получить идентификатор из этого метода и установить текущие переменные сообщения так же, как и другие 2 метода. Как и при поиске по заголовку, поиск и изменение заголовка вместе вызовут проблемы. Осторожно!

ОБНОВЛЕНИЕ И УПРАВЛЕНИЕ

Правильно! Теперь, когда поиск закончился, мы можем перейти к самой функции update ().

Я не собираюсь врать, это действительно довольно просто. По сути, функция обновления проверяет, был ли установлен какой-либо из 8 параметров публикации. Если это так, он создает и заполняет массив, совместимый с wp_update_post (). Он запускает wp_update_post () и привет, готово! Работа сделана хорошо. Для эффективности мы добавим простую проверку перед назначением каждой переменной. Он обновляется только в том случае, если он изменился. Хотя я немного предвзят, должен признать, что это красивый код!

Установленные значения сравниваются со значениями, возвращаемыми самим WordPress. Тогда требуется только простое сравнение. Вы заметите, что операторы IF-шаблона и slug имеют немного большую валидацию, чем другие. Хотя мы уже включили проверку, чтобы отфильтровать для них ошибки, двойная проверка не повредит! Проверка шаблона страницы (она проверяет, установлен ли тип сообщения на страницу) просто потому, что попытка установить шаблон страницы для не-сообщения – моя ошибка. Извините за перебор! С другой стороны, проверка слизняков очень важна! Вы ДЕЙСТВИТЕЛЬНО не хотите конфликтовать слагами. В этом случае нет такого понятия, как излишество. Это почти все для update (). Наконец, у нас есть несколько полезных общих функций.

ДОПОЛНИТЕЛЬНЫЕ ФУНКЦИИ

Теперь, когда основная часть класса написана, всегда полезно добавить пару полезных / экономящих время функций. Посмотри;

Быстрые объяснения;

  • get_content (): эта функция возвращает содержимое сообщения, которое вы искали (это предоставляется WordPress, а не вами). Это не принимает никаких параметров.
  • get_var (‘var_name'): Иногда это может сбивать с толку, если вы установили много данных. Он принимает один параметр: строку с желаемым именем переменной. Вот список доступных ‘var_name's;
  • ‘title' – Заголовок сообщения, который вы установили.
  • ‘type' – Тип сообщения, который вы установили.
  • ‘content' – Контент, который вы установили.
  • ‘category' – Категории, которые вы установили (возвращает массив).
  • ‘template' – Шаблон страницы, который вы установили.
  • ‘slug' – установленный вами слизень.
  • auth_id – ID автора, который вы установили.
  • ‘status' – Статус сообщения, который вы установили.
  • ‘current_post' – объект сообщения WP, возвращенный после поиска.
  • ‘current_post_id' – идентификатор сообщения WP, возвращенный после поиска.
  • ‘current_post_permalink' – постоянная ссылка WP Post, возвращенная после поиска.
  • ‘errors' – Массив ошибок (очень полезно).
  • unset_all (): без параметров. Одна работа. Удаляет все данные, хранящиеся в экземпляре класса. Осторожно.
  • __toString (): это то, что запускается при печати экземпляра самого класса. Сообщение об ошибке напечатано. Используйте Use PrettyPrintAll ()
// Start new class $Poster = new PostController(); // Echoes error message echo $Poster;
  • PrettyPrint (): это просто полезная функция, которая красиво отображает объекты и массивы в «предварительных» тегах. Принимает один параметр: данные для «PrettyPrinted».
  • PrettyPrintAll (): то же самое, что PrettyPrint (), за исключением «PrettyPrints» всего экземпляра класса (включая все переменные).

Вот и все!

Спасибо, что прочитали мою статью: надеюсь, вы нашли ее полезной и поучительной!

Вы можете найти последнюю версию класса PostController на Github: PostController. Если вам понравился этот урок, поделитесь! (Упоминание тоже было бы неправильным: @harribellthomas ?). Если у вас есть какие-либо вопросы, оставьте их в разделе комментариев ниже.

Источник записи: https://www.wpexplorer.com

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