Статьи

Использование WordPress для разработки веб-приложений: доступные функции, часть 5 — получение данных

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

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

За последние несколько статей мы рассмотрели роли пользователей , разрешения, управление сеансами , электронную почту и сериализацию данных . Но если вы собираетесь сохранять данные в базе данных, имеет смысл только, что вы собираетесь их извлекать, верно?

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

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

Ничего страшно сложного, правда?

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


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

А поскольку WordPress использует собственную базу данных для управления хранением данных, а также предоставляет API-интерфейсы, которые мы можем использовать для наших собственных проектов, это, очевидно, веб-приложение.

Кроме того, как я уже говорил в прошлой статье, понять, как сохранять данные с помощью соответствующих API-интерфейсов, действительно просто, и как только вы научитесь использовать один из них, использовать остальные из них почти так же просто. Кроме того, научиться извлекать данные, возможно, еще проще.

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

В предыдущей статье у нас есть подробный обзор таблиц, в которые вы можете писать. Вы можете прочитать об этом более подробно в первой статье, но вот краткое изложение таблиц, которые мы обсуждали:

  • wp_options
  • wp_posts
  • wp_postmeta
  • wp_comments
  • wp_commentmeta

Помните, что вы можете просмотреть все это и многое другое на странице описания базы данных в Кодексе WordPress.

Так что с этим, как наше повышение квалификации, пришло время на самом деле посмотреть, как извлечь информацию из базы данных.

К счастью, это почти так же просто, как записать информацию в базу данных. Два основных различия:

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

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

Напомним из прошлой статьи, что способ записи данных в таблицу параметров заключается в использовании add_option или get_option .

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

1
2
3
4
5
if ( isset( $_POST[‘value’] ) && ! empty( $_POST[‘value’] ) {
 
    $clean_value = strip_tags( stripslashes( $_POST[‘value’] ) );
    add_option( ‘my-value’, $clean_value );
}

Это означает, что мы очистили и сохранили информацию в базе данных с помощью ключа my-value .

Чтобы получить эту информацию из базы данных, мы делаем следующий вызов:

1
$my_value = get_option( ‘my-value’ );

Это почти слишком просто.

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

Например, допустим, мы собираемся найти значение для ключа your-value , которого не существует.

1
2
// $your_value will actually equal FALSE
$your_value = get_option( ‘your-value’ );

В этом случае функция вернет FALSE ; однако, если мы указываем второй параметр, мы можем вернуть значение по умолчанию:

1
2
// $your_value will actually equal an empty string
$your_value = get_option( ‘your-value’, » );

Даже все, ничего страшного, правда?

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

Прямо из кодекса WordPress :

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

Опять же, это очевидно предназначено для работы с темами; тем не менее, я хотел упомянуть об этом здесь, чтобы быть завершенным и завершить обсуждение, начатое в предыдущей статье.

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

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

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

  • add_post_meta
  • update_post_meta
  • add_comment_meta
  • update_comment_meta

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

Это означает, что если вы хотите позвонить:

1
$my_data = get_post_meta( get_the_ID(), ‘my-post-information’ );

Тогда данные будут возвращены вам в массиве; однако, если вы передадите TRUE в функцию при вызове, тогда данные будут возвращены вам в виде строки:

1
$my_data = get_post_meta( get_the_ID(), ‘my-post-information’, TRUE );

Конечно, нет правильного способа сделать это. Вместо этого это зависит от информации, которую вы хотите вернуть и / или как вы хотите, чтобы она вернулась. Поскольку нет единственного способа сделать это, вы должны судить о своем использовании на основе реализации вашего приложения.

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

Экранирование данных — это процесс, при котором мы гарантируем, что данные, которые мы собираемся представить пользователю, защищены. Это в основном очистка данных; однако это делается после того, как данные были извлечены из базы данных, а не до их записи в базу данных.

Когда дело доходит до принятия данных, мы должны знать о четырех основных функциях:

  1. esc_html используется для экранирования блоков HTML.
  2. esc_url — это когда вам нужно очистить URL, которые будут записаны в текстовые элементы, узлы атрибутов или где-либо еще в разметке.
  3. esc_js используется для экранирования текстовых строк, которые используются для отображения JavaScript — прежде всего, встроенного JavaScript.
  4. esc_attr кодирует несколько символов, которые могут искажать вывод, если не обрабатываются должным образом.

Хорошая вещь об этом состоит в том, что они обычно работают точно так же, и способ определить, какой из них вам нужно использовать, относительно прост:

  • Если вы визуализируете встроенный JavaScript, то используйте esc_js ,
  • Если вы визуализируете атрибут для элемента, используйте esc_attr .

Достаточно просто, правда?

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

1
<?php echo ‘<input type=»text» name=»fname» value=»‘ . esc_attr( $_POST[‘fname’] ) . ‘»>’;

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


В этой серии мы рассмотрели много вопросов, но это еще не все.

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

Изначально WordPress не предлагает самые чистые и понятные URL; однако это можно изменить с помощью API Rewrite. В следующей статье мы рассмотрим, как именно мы можем ввести пользовательские правила для чистых URL-адресов, которые напоминают то, что вы увидите в веб-приложении, а не в системе управления контентом или блоге.