TL; DR
В ядре WordPress нет JavaScript API, и никто не планирует, но на самом деле в этом нет необходимости.
Backend
Прежде всего, скажем, что в отношении бэкэнда некоторая полезная информация может быть получена из уже существующих глобальных переменных JavaScript (WordPress любит все глобальные разновидности).
Например
ajaxurl
для admin-ajax.php
URL, который будет использоваться в вызовах ajax
pagenow
для текущей страницы администрирования, например, «панель инструментов»
adminpage
для текущего файла страницы администратора, например, «index-php» (точки заменяются на дефисы)
typenow
для текущего типа сообщения в то время как edit.php
, post.php
илиpost-new.php
userSettings
может использоваться для получения информации о текущем зарегистрированном пользователе
Эта информация дает вам некоторый «контекст» состояния приложения, пока вы находитесь в бэкэнде.
Для других вещей, упомянутых в этом вопросе, вам не нужен никакой «API», потому что очень простые функции jQuery могут сделать свое дело. Например, чтобы узнать, закрыто ли меню администратора, вы можете проверить наличие «свернутого» класса в теле:
if ( $(body).hasClass('folded') ) {
alert( 'Admin left menu is closed!' );
} else {
alert( 'Admin left menu is open!' );
}
Отсутствие документации
Для таких вещей, как предыдущие фрагменты, создавать функции не стоит. WP уже имеет слишком много функций в PHP. Я действительно надеюсь, что такие дополнительные функции не будут добавлены в ядро.
Что действительно нужно JavaScript в WordPress, так это больше документации для существующих функций: ни одна из вещей, которые я написал выше, не документирована ни в каких официальных документах, таких как Кодекс или в исходных файлах.
Внешний интерфейс?
Пока здесь я только говорил о бэкэнде.
Это потому, что почти все, что происходит на веб-интерфейсе, связано с используемой в данный момент темой. Давайте представим, что WordPress предоставляет файл JavaScript, содержащий функции для получения информации о текущем состоянии приложения; если тема не ставит этот JS-файл в очередь, эти функции недоступны, и заставить тему ставить в очередь такой скрипт было бы абсолютно неправильно.
Нет необходимости в (другом) API
Тем не менее, в WordPress любая информация, которую вы можете получить через PHP, может быть легко использована и в JavaScript без каких-либо запросов AJAX. Функция, которая делает это возможным, есть wp_localize_script()
.
Предположим, что вы хотите получить текущего пользователя и пользовательские данные, такие как его роль в вашем JavaScript, и вы также хотите знать переменные запроса, используемые на текущей странице, вы можете сделать следующее:
$data = array(
'user' => wp_get_current_user(),
'query_vars' => $GLOBALS['wp']->query_vars
);
wp_localize_script( 'myscript', 'MyScriptData', $data );
При этом в вашем сценарии MyScriptData.user
переменная будет объектом JavaScript, где все пользователи будут получать информацию обо всех переменных запроса.
Это справедливо для скриптов бэкэнда и фронтэнда (другими словами: для обеих «сторон»). Нет необходимости в каком-либо дополнительном JavaScript API для получения этой информации. PHP достаточно, если вы используете правильные способы передачи информации из PHP в JS.
Backbone.js
Backbone.js - это инфраструктура JavaScript, которая позволяет (своего рода) шаблон разработки MVC с использованием JavaScript. Он был включен в ядро с WP 3.5 - главным образом для обработки медиа галереи.
Эта библиотека не является API-интерфейсом WordPress JavaScript, потому что, безусловно, она позволяет более мощную разработку JavaScript, но в эту библиотеку не было добавлено ни одной специфичной для WordPress функции, и это единственное в настоящее время основное использование Backbone.js. Библиотека мультимедиа более или менее недокументирована и не имеет публичного API. И AFAIK не планируется заполнять этот пробел. (Более чем рад изменить / удалить это утверждение - если кто-то может доказать, что я не прав).
WP-API
Как указывают Rarst и Brian Fegter , WP API станет частью ядра (вероятно, начиная с WP 4.1).
Но я должен сказать, что это не API JavaScript. Он просто позволяет подключить HTTP-запрос к конечной точке приложения, которая контролируется WP-API. И API получает данные из базы данных и возвращает их в формате JSON. Пример из документов:
Хотите получать сообщения своего сайта? Просто отправьте GET
запрос на /wp-json/posts
. Обновить пользователя с ID 4
? Отправить POST
запрос на /wp-json/users/4
. Получить все сообщения с поисковым термином «круто»? GET /wp-json/posts?filter[s]=awesome
,
Поскольку запросы HTTP и связанные с ними ответы JSON могут обрабатываться на любом языке, который поддерживает запросы HTTP и формат данных JSON (включая PHP, Ruby, Python, ASP и т. Д.), Основная цель WP API состоит в том, чтобы позволить получать и устанавливать данные WordPress. из не-WP приложений. Это означает, что внутри любого приложения , а не только WordPress.
Конечно, поскольку JavaScript - это язык, который может обрабатывать как HTTP-запросы, так и формат JSON, вы также можете использовать WP-API из JavaScript WordPress. Кто-то также работает над клиентом WP js для этого API, но
Используя wp_enqueue_script()
+ функции Ajax API + WordPress PHP, можно получить всю необходимую информацию без каких-либо дополнительных API. А поскольку все три «ингредиента» являются стандартами, установленными WP, их использование не является «собственным решением». Он просто использует стандартные решения для выполнения пользовательских (и общих) задач, что и является целью разработки плагинов.
даже можно использовать JavaScript для использования WP API. То, что WP-API возвращает JSON, не делает его API-интерфейсом JavaScript. Функция JavaScript не задействована (отправляется HTTP-запрос и возвращается JSON-репозиторий. Практически так же, как и при использовании AJAX API). В противном случае любой сервис, который возвращает JSON, должен рассматриваться как API WordPress JS. WP-API следует рассматривать как API внешнего сервиса, который возвращает JSON, и может случиться так, что сайт, который использует этот сервис JSON, является тем же, который его предоставляет.
с WP API нельзя сделать ни единой вещи, которую нельзя сделать с помощью API AJAX. Но есть много вещей, которые можно сделать с помощью AJAX API. но не с WP-API.
Замечание о WP-API + Backbone.js
С помощью Backbone.js можно получать и сохранять информацию в приложениях, поддерживающих HTTP-запросы RESTful .
Проблема в том, что WordPress, как в «обычных», так и в AJAX-запросах, почти полностью поддерживает RESTful: он поддерживает $_GET
и $_POST
запрашивает только по умолчанию, и использование одного или другого с одинаковым URl заканчивается ... тем же результатом ,
Напротив, WP API является RESTful, поэтому приложения на базе Backbone могут использовать его для мощных приложений JavaScript, но я бы не стал определять Backbone или WP API или Backbone + WP API в качестве API JavaScript для WordPress. над.