One more approach at using the WordPress REST API
The WordPress REST API can be used for a number of interesting things and projects. We’ve established that pretty clearly.
There’s one area, however, where it’s been getting some real popularity:
Headless WordPress is the idea of decoupling the two main layers of the WordPress ecosystem – the backend and the frontend.
This allows you to take all the goodies that the WordPress software has under the hood and connect them with a final product that doesn’t use the standard WordPress presentation – it is not a website, per se.
The whole concept is very interesting. We talk about it some more in another post, where we discuss whether headless WordPress makes sense, and compare the top headless WordPress hosting solutions in the market.
Соотношение цели и задач исследования
Зависимость цели и задач научной статьи.
Задачи – это пути достижения цели.
Если цель должна состоять из одной части или двух, то задач нужно вывести 2-5. Задачи можно сравнить с отдельными ступеньками на лестнице к достижению поставленной цели. Для того чтобы их сформулировать, задайте себе вопрос: «Как я буду достигать цель, которую обозначил в статье?».
Далее отвечаем на этот вопрос, подгоняя свои ответы под шаблон научного стиля. Запомните такой нюанс: любой исследователь перед написанием научной работы обрабатывает литературу, это один из путей достижения цели, однако нельзя подавать это как одну из задач. Задачи типа «поиск и проработка литературы», «проведение эксперимента», «оценка и описание результатов» слишком обобщенные, по сути, это отображение общепонятной истины, то же самое, если бы отнесли к задачам «напечатать статью и проверить».
При формулировке задач можно употреблять глаголы «изучить», «наблюдать», «выявить», «оценить», «определить», «обосновать», «исследовать» и т.д.
Задачи должны обязательно соответствовать цели, не отклоняться от нее и не выходить за рамки.
Использование данных геолокации в формах WordPress
Формы помогают генерировать потенциальных клиентов, взаимодействовать с клиентами и посетителями веб-сайтов и развивать свой бизнес. Используя данные геолокации, вы можете больше узнать о своих клиентах и предложить им больше местного контента.
Для этого вам понадобится WPForms. Это лучший плагин для создания форм WordPress на рынке, который позволяет создавать любые формы, которые вам нужны. Он также поставляется с надстройкой геолокации, которая помогает вам собирать информацию о геолокации пользователей при отправке форм.
Во-первых, вам необходимо установить и активировать плагин WPForms. После активации вам необходимо посетить страницу WPForms » Settings, чтобы ввести лицензионный ключ. Вы можете найти эту информацию в своей учетной записи на веб-сайте WPForms.
Затем вам нужно посетить страницу WPForms » Addons. Отсюда вам нужно нажать кнопку «Установить надстройку» рядом с надстройкой геолокации.
WPForms теперь загрузит, установит и активирует надстройку за вас. Теперь вы можете создать свою первую форму, посетив страницу WPForms » Add New. Начните с ввода имени для вашей формы и выбора шаблона.
Шаблон — это отправная точка, которую вы можете использовать для быстрого создания форм. Если хотите, можете начать с пустой формы. При нажатии на шаблон откроется интерфейс конструктора форм. Справа вы увидите предварительно загруженные поля формы на основе выбранного вами шаблона. Вы можете добавлять новые поля из столбца слева.
Вы также можете просто кликнуть любое поле, чтобы отредактировать его, перетащить, чтобы переместить, или удалить любое поле формы. По завершении не забудьте нажать кнопку «Сохранить», чтобы опубликовать форму.
Ваша форма готова. Чтобы собирать данные о геолокации, вам необходимо добавить форму на свой сайт. WPForms упрощает добавление форм в любом месте вашего веб-сайта. Просто отредактируйте сообщение или страницу, на которой вы хотите добавить форму, и нажмите кнопку (+) добавить новый блок. Найдите блок WPForms и добавьте его в свой пост.
В настройках блока просто выберите созданную ранее форму. WPForms загрузит предварительный просмотр вашей формы в редакторе содержимого. Теперь вы можете сохранить свой пост или страницу и просмотреть свою форму в действии.
Просмотр данных геолокации для записей входов в вашей форме
После того, как вы добавили форму на свой веб-сайт, подождите, пока она соберет несколько входов, или добавьте несколько тестовых записей самостоятельно.
После этого вы можете перейти на страницу WPForms » Entries и щелкнуть имя своей формы, чтобы просмотреть входы. На странице «Entries» щелкните ссылку «View» рядом с любой записью, чтобы просмотреть подробные сведения.
На странице сведений о входе вы увидите поле с географическим местоположением пользователя, отмеченным на карте.
Использование данных геолокации для ваших форм в WordPress
Данные геолокации можно использовать для развития вашего бизнеса. Вы можете выяснить, какие регионы проявляют больше интереса к вашим продуктам, услугам или веб-сайту. Вы можете сопоставить эти данные со своими отчетами Google Analytics, чтобы увидеть, какие регионы неэффективны. Если ваш бизнес обслуживает глобальную аудиторию, вы можете рассмотреть возможность предложения форм на местных языках.
Closing thoughts
WordPress is constantly evolving and so is its REST API. From what I remember from our latest experiments with it, it’s now much easier to use and even enjoyable to configure—believe it or not ;).
It can all be done very quickly and hassle-free, empowering developers to use WP, and its proven content management capabilities, with any frontend stack.
For me, using React was the cherry on the cake as I hadn’t played with its Hooks yet. They may be daunting to understand at first, but they end up being simple building blocks that we can abstract away to be more efficient.
We wouldn’t have think that five years ago, but WordPress and the JAMstack can now work hand-in-hand in a few different ways. In this post, we’ve shown how WP can be used as a headless CMS. But did you know it can also act as a static site generator? We’ll have a go at this with the help of tools such as Strattic and WP2Static in another upcoming post.
Stay tuned (by subscribing to our newsletter) if it’s something that might interest you!
WP CLI
Центр управления WordPress из терминала (командной строки). Пожалуй, все, что вы можете сделать из административной части WordPress можно повторить с помощью команды из терминала, а значит автоматизировать bash-скриптом. Есть и функционал, который недоступен через графический интерфейс.
Полный список команд доступен на официальном сайте. Там же можно найти дополнения ко многим популярным плагинам (Advanced Custom Fields, Jetpack). Ниже мы рассмотрим пару интересных возможностей утилиты WP CLI.
Проверка WordPress после взлома или заражения
Команда позволяет проверить целостность установки WordPress. Полезна, если ваш сайт подвергся заражению или был взломан. С помощью этой команды можно точно диагностировать изменены ли какие-то файлы ядра или нет.
# Все в порядке kolya$ wp core verify-checksums Success: WordPress install verifies against checksums. # Файл wp-comments-post.php был изменен и не прошел проверку kolya$ wp core verify-checksums Warning: File doesn't verify against checksum: wp-comments-post.php Error: WordPress install doesn't verify against checksums.
Работа с медиафайлами в WP-CLI
Часто необходимо выполнить регенерацию картинок, загруженных на сайт. Вместо плагина Regenerate Thumbnails вы можете использовать команду . Дополнительные параметры позволяют выполнить операцию для всех медиафайлов или только для нескольких.
Работа с миниатюрами в WP CLI
Если вы переезжаете с другой CMS или хотите разом добавить не один десяток файлов в медиафайлы WordPress, воспользуйтесь командой . Она позволяет импортировать все файлы находящиеся в заданной папке или по указанному URL.
Активация плагина для пользователя
Сам по себе плагин после установки и активации работать не будет до тех пор, пока вы не включите его использование для конкретного пользователя. Делается это в интерфейсе настроек. Давайте включим плагин для моей учётной записи, например.
Заходим в меню “Пользователи” — ”Ваш профиль”:
Прокручиваем экран вниз до раздела “Двухфакторная аутентификация для WordPress” и включаем настройку “Использовать auth.as”:
После этого для вашего пользователя будет производиться дополнительная проверка при попытке войти в административный интерфейс WordPress. При любых неуспешных вводах пароля или некорректных настройках плагин будет блокировать вход в систему.
Делаем AJAX-запросы правильно
Большинство программистов в WordPress превратно понимают суть и работу AJAX. Все из-за залипания в словах. Есть у WordPress механизм admin-ajax, который хорошо документирован и 99% программистов уверены что AJAX надо делать через него.
«Эксперты» пишут статьи о том как это применять и почти ни у кого не возникает сомнений в адекватности такого решения.
А засада и ошибка заключается в том что admin-ajax был придуман для работы в админке. Там срабатывает тег is_admin. Тянется куча лишних файлов, кода и функционала. Для большинства маленьких сайтов ничего страшного, но если у вас более менее сложный сайт, на который приходит много функционала и трафика, то таким образом можно получить тормоза. А тормоза часто могут прибить сайт или испортить впечатление Клиентов о работе с вами.
Команда WooCommerce об этом знали, и еще до внедрения REST API — использовали правильный механизм работы с AJAX с фронта. См как работает класс WC_AJAX.
С приходом REST API у всех появилась возможность делать AJAX в WordPress правильно. Но стереотипы, шаблоны и привычки не дают этого. Многие до сих пор фигачат AJAX через admin ajax )
Стили CSS
Для формирования симпатичных кнопок загрузки нужно добавить стили CSS. Открываем файл style.css и добавляем следующие строки:
.green a:link, .green a:visited{ color:#ffffff; text-decoration:none !important; } .black a:link, .black a:visited{ color:#ffffff; text-decoration:none !important; } .green a:hover, .black:hover{ color:#ffffff; text-decoration:none !important; } .green { display: inline-block; font-weight:bold; font-size:1.2em; background : -webkit-gradient(linear, left top, left bottom, from(#88c841), to(#73b338)); background : -moz-linear-gradient(center top, #88c841, #73b338); -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; padding: 5px 20px; text-align: center; -shadow: 0px 1px 0px #6c0909; color:#ffffff !important; text-decoration:none !important; } .green:hover { background : -webkit-gradient(linear, left top, left bottom, from(#73b338), to(#88c841)); background : -moz-linear-gradient(center top, #73b338, #88c841); color:#ffffff !important; text-decoration:none !important; } .black { display: inline-block; font-weight:bold; font-size:1.2em; background : -webkit-gradient(linear, left top, left bottom, from(#000000), to(#414141)); background : -moz-linear-gradient(center top, #414141, #000000); -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; padding: 5px 20px; text-align: center; -shadow: 0px 1px 0px #6c0909; color:#ffffff !important; text-decoration:none !important; } .black:hover { background : -webkit-gradient(linear, left top, left bottom, from(#414141), to(#000000)); background : -moz-linear-gradient(center top, #000000, #414141); color:#ffffff !important; text-decoration:none !important; }
Карта сайта для пользователей
Следующая важная настройка – это создание карты сайта для пользователей. Мы уже делали карту для поисковых систем. Теперь надо сделать подобную карту для людей. И вот тут всё совсем не так просто.
Дело в том, что до сих пор так и не сделали нормального плагина, который создавал бы пользовательскую карту сайта. Вы можете вернуться в раздел установки плагинов и ввести в строку поиска «Sitemap HTML». И вам даже предложат несколько неплохих вариантов.
Но нет никаких гарантий, что эти плагины будут дальше нормально работать с новыми версиями WordPress. Кроме того, эти плагины часто сильно нагружают сайт, из-за чего тот начинает медленно работать. И вообще, автоматические генераторы таких карт работают с ошибками.
Поэтому я предлагаю вам другой вариант. Вы можете нанять программиста, который сделает страницу, куда будут автоматически добавляться новые записи. Или вы можете это сделать сами руками.
Ведь что такое «карта сайта для людей»? По сути, это просто страница, на которой списком представлены ссылки на все ваши статьи. Эти ссылки сгруппированы по рубрикам. Вот, как это выглядит:
Страница на скриншоте сделана мною вручную. Каждый раз, когда я пишу новую статью, я просто руками добавляю новую ссылку на эту страницу в новую рубрику. Таким нехитрым образом решается сразу множество проблем:
- Ваш сайт работает быстро и без ошибок;
- Если вы не хотите включать какой-то материал в карту сайта, то просто не добавляете на него ссылку;
- Вы можете добавить любые комментарии к рубрикам и к отдельным статьям в любом месте, где пожелаете;
- Вы можете разбить материалы как вам удобно. Например – по темам, а не по рубрикам (часто это совсем не одно и то же).
Назовите эту страницу, скажем, «Содержание сайта», и добавьте её в главное меню. Сделайте настоящий навигатор, который задержит посетителей вашего сайта на пару часов. Но, повторюсь, вы можете попробовать использовать и автоматические плагины.
An introduction to Application Programming Interfaces (APIs)
Before we delve into the REST API specifically, let’s back up a little. To understand this concept, it’s key to first have a basic idea of what APIs are in general.
At its most fundamental level, an API – or Application Programming Interface – enables two applications to communicate with one another. For instance, when you visit a website, your browser sends a request to the server where that site is located. That server’s API is what receives your browser’s request, interprets it, and sends back all the data required to display your site.
There’s a lot more to the way APIs work in a technical sense, of course. However, we’re going to focus on what probably matters most to you – the practical applications. APIs have been getting lots of attention and visibility, because many companies have begun to package them up and provide them as products you can use.
In other words, developers at a company like Google will collect some parts of their application’s code together, and make it publicly available. That way, other developers can use the API as a tool to help their own sites connect to Google and take advantage of its features:
For instance, you could use the Google Maps API to place a fully-functioning map on your site that benefits from all of Google’s relevant data and features. This saves you from having to code up a map and collect all that data yourself. The same applies to a wide range of sites and applications.
As websites and the functionality they rely on get more complex, tools like APIs become crucial. They enable developers to build on existing functionality, making it possible to simply ‘plug in’ new features to your website. In turn, the site that owns the API benefits from the increased exposure and traffic.
#WordPress #REST API: What it is and how to get started using it
Как работает базовая аутентификация
В базовой аутентификации клиент запрашивает URL, который требует аутентификацию. Сервер опрашивает клиента (или user agent) для собственной аутентификации путём отправки кода . В ответ на это клиент отправляет обратно такой же запрос, но уже с данными доступа в качестве строки, закодированной в base64 в формате . Строка отправляется в заголовке :
Authorization: Basic {base64_encode(username:password)}
Итак, если именем пользователя будет tutsplus и паролем 123456, то вместе с запросом будет отправлено следующее:
Authorization: Basic dHV0c3BsdXM6MTIzNDU2
Так как закодированная в base64 строка может быть с лёгкостью раскодирована, этот метод очень небезопасен при использовании в открытых сетях. Этот метод должен использоваться только для отладки и разработки, когда соединение между сервером и клиентом безопасно.
Sometimes Transients Aren’t Good Enough
Some premium WordPress hosting services actually do not allow you to use transients in production. They have code running, perhaps in the form of an MU plugin or some other script, that will intercept your attempt to use the transients API and store that information via the object cache instead. WP-Engine, in its most common configuration, is a prime example of this.
An alarming sight in the phpMyAdmin UI: A production site completely devoid of transients? This likely means object caching is at work.
If you are simply storing and retrieving data, you actually don’t have to care about this and may never even notice it’s happening. The entire family of functions will provide you with the same end result, just filtered to use the object cache instead of the transient cache. Where you might run into problems, though, is when attempting to delete transients. Here’s why.
If your API integration is complex enough to merit its own settings page, you may wish to include a UI to allow the admin user to clear the entire transient cache for your plugin. The most common use for this button would be for when the client changes some data directly on the remote service, and wants to invalidate the cache that we’re storing in WordPress. This button might also come in handy if the client changes account credentials, API keys, or just generally as a “factory reset” button for debugging.
An example of a UI for allowing the client to empty the local cache for their API data.
Even if you were smart enough to namespace all of your transient keys so that you have some hope of identifying each of them for , the best-case scenario probably still involves raw SQL, which I always try to avoid in WordPress:
Not convenient, not efficient. Instead, this situation calls for object caching because object caching gives us a convenient way to group cached values together. This way, when you need to empty all of the cached values related to your plugin, it’s a simple one-liner call to .
I’d summarize all of this by saying: You can’t be an expert at consuming APIs if you are not yet an expert at managing the cache for that data.
As a client, the key thing to watch out for is aberrant cache behavior between staging and production environments. In other words, although testing a new batch of work in staging is always a good practice, caching is something that must also be tested in production with equal care.
Короткое знакомство с HTTP API
Для совсем новичков, пожалуй стоит пояснить, что такое HTTP запрос. Это запрос браузера к серверу, или одного сервера к другому, где происходит подобный диалог:
- Привет сервер, можешь мне показать файл: file.html?
- Привет! Могу, вот он…
Выглядит такой диалог вот так (только на месте клиента в данном случае выступает наш сервер, который делает запрос на другой сервер):
Устарело с WP 4.6. WP_Http определяет тип транспорта, и вызывает другой класс соответствующий этому типу. Вызванный класс создает сам запрос. По умолчанию в WordPress два таких класса, для разных типов: WP_Http_Curl и WP_Http_Streams
Удобство и необходимость такого API заключается в том, что разные хостинги поддерживают разные варианты отправки запросов, а некоторые не поддерживают ни один. Задача HTTP API создать единый стандарт использования запросов в WordPress, при этом чтобы запросы работали всегда, если не поддерживается один способ транспортировки запроса, то будет найден альтернативный.
Другая задача — упростить разработку. Авторам плагинов приходится писать кучу кода, изобретать велосипеды и допускать ошибки. И все это, чтобы их плагин умел работать с любым хостингом. С HTTP API эта задача должна упроститься до нескольких встроенных в WordPress функций.
Еще один плюс HTTP API в том, что мы имеет единый стандарт указываемых данных, при работе с разными типами транспортировки запросов, т.е. мы всегда указываем одинаковые параметры и передаем их в функцию HTTP API, а класс уже выбирает подходящий тип транспорта, например cURL, изменяет наши параметры под понятные для текущего типа транспорта, и отправляет запрос.
С версии 2.7. HTTP API работал только с базовыми элементами запроса: header, body и response. С версии 2.8. появились: сжатие (compression), куки (cookies) и поддержка прокси (proxy). Некоторые из функций пассивные, т.е. работают автоматически, без установки дополнительных параметров запроса.
HTTP API WordPress сегодня — это полноценное API, в котором учтены многие мелочи и исправлены сотни ошибок. Также следует заметить, что до версии WP 4.4 HTTP API значительно отличался от того какой он сейчас, поэтому некоторые моменты из этого мануала могут не работать на версиях до 4.4.
Почти все возможности транспорта, можно изменять через опции или фильтры. Например, через фильтр можно добавить еще один, свой класс транспорта. Или через установку констант в файл wp-config.php можно включить режим прокси:
define('WP_PROXY_HOST', '192.168.84.101'); define('WP_PROXY_PORT', '8080'); define('WP_PROXY_BYPASS_HOSTS', 'localhost, www.example.com, *.wordpress.org');
Чтобы разобраться, как работает прокси смотрите класс WP_HTTP_Proxy{}
Ну, и наконец, HTTP API можно без особого труда расширить, для работы с Twitter API, Google Maps API и т.д.
Использование API настроек WordPress для создания настраиваемых параметров темы
Давайте теперь посмотрим, как разработчик может добавить новую опцию темы с помощью API настроек WordPress. Мы перечисляем задачи и соответствующие API-интерфейсы для добавления в тему нового флажка Theme Option.
В качестве справки для создания полного рабочего примера мы также добавили образец кода для добавления нового пункта меню и страницы. Вы можете изменить его в соответствии с требованиями.
Шаг 1. Создайте новое меню для параметров темы WordPress.
Добавьте новое меню под названием «Настройка темы» в меню внешнего вида. Новое меню открывает страницу «theme_options», определенную на следующем шаге.
Страница настроек вывода
Шаг 2. Добавьте пустую страницу в новое меню
Добавьте новую пустую страницу «theme_options» в меню «Настройка темы». Заголовок страницы – «Страница параметров настраиваемой темы».
Страница настроек вывода
Шаг 3. Добавьте и отобразите пользовательские разделы на новой странице
Отобразите разделы страницы. Вызывайте эти API только после того, как вы определили настройки и разделы в файле functions.php.
Страница настроек вывода
Шаг 4. Добавьте поле настроек в раздел
Затем мы добавляем в раздел поле настроек с именем «first_field_option». Мы также регистрируем поле и добавляем опцию темы в базу опций.
Страница настроек вывода
Шаг 5. Получите значение поля настроек
Давайте теперь посмотрим, как получить и использовать значение параметра поля настроек. Мы модифицируем обратный вызов отображения поля настроек, чтобы установить начальное значение поля флажка. Мы используем API get_option для получения значения параметра из базы данных.
В приведенном ниже примере кода значение флажка устанавливается в соответствии со значением, сохраненным в базе данных. Если пользователь установит флажок и отправит изменения, то в следующий раз, когда он откроет вкладку «Настройка темы», флажок будет установлен в соответствии со значением, сохраненным в базе данных.
Страница настроек вывода
Simple Example of WordPress Api 2.0 with Guzzle PHP Client
Here i am accessing WordPress 2.0 restful API using Guzzle php client.You can use any other programming languages framework like spring boot,django,ruby etc as well, The whole idea is that how to pass parameters with Rest Request using WordPress api and Rest Client.
In this example, I am creating a new post into WordPress database using WordPress api. I am creating Guzzle client and passing base64 string with in request header.
<?php
require_once ‘vendor/autoload.php’;
use GuzzleHttp\Client;
$base64 = base64_encode(«username:password»);
$client = new Client([
// Base URI is used with relative requests
‘base_uri’ => ‘http://www.yourblogname.com/wp-json/wp/v2/’,
// You can set any number of default request options.
‘timeout’ => 2.0,
‘headers’ => [‘Content-Type’ => ‘application/json’, «Accept» => «application/json», ‘Authorization’ => «Basic » . $base64],
//ssl false
‘verify’ => false
]);
1 |
<?php require_once’vendor/autoload.php’; useGuzzleHttp\Client; $base64=base64_encode(«username:password»); $client=newClient( // Base URI is used with relative requests ‘base_uri’=>’http://www.yourblogname.com/wp-json/wp/v2/’, // You can set any number of default request options. ‘timeout’=>2.0, ‘headers’=>’Content-Type’=>’application/json’,»Accept»=>»application/json»,’Authorization’=>»Basic «.$base64, //ssl false ‘verify’=>false ); |
Where is :
- $base64 : This variable will contains string of username and password
- base_uri : The WordPress host api url path
- headers : This will contains request header parameters
- timeout : Request timeout in sec.
- verify : SSL verification false
Now I will create post parameters and passed to guzzle client.We finally send request to wordpress api.
$params = array(
«title» => «Hello Updated World!»,
«content_raw» => «Howdy updated content.»,
«date» => «2017-02-01T14:00:00+10:00»
);
//print_r(json_encode($params));die;
//$response = $client->request(‘POST’);
$response = $client->post(‘posts/’,
);
echo «<pre>»;
echo $response->getBody();
1 |
$params=array( «title»=>»Hello Updated World!», «content_raw»=>»Howdy updated content.», «date»=>»2017-02-01T14:00:00+10:00» ); //print_r(json_encode($params));die; $response=$client->post(‘posts/’, ‘body’=>json_encode($params) ); echo»<pre>»; echo$response->getBody(); |
As you can see, I created Post data and stored into variable.I use Post method() of Guzzle client and passed data into of request.
After successfully request completed, you will get JSON object as response which notify a new WordPress post has been created and stored into draft(default WordPress post status).