Потребление внешнего API в WordPress?

11 сент. 2011 г., 20:02:33
Просмотры: 36.2K
Голосов: 10

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

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

Проблема в том, что я совсем не знаю WordPress (для меня это просто система, где можно добавлять статьи через админ-панель...) и не знаю, как можно писать собственный серверный код в нем. Я искал в Google и нашел что-то под названием "плагин", но я не уверен, возможно ли это сделать, и является ли это самым простым способом, так как мне не нужно, чтобы код использовался какой-либо третьей стороной. Если возможно модифицировать установку WordPress, чтобы добавить мои PHP-файлы и написать необходимый код (мои представления с тем же CSS WordPress), это было бы проще, но я не знаю, возможно ли это?

3
Комментарии

Что именно вы пытаетесь сделать: загрузить json-ленту в WordPress, вставить данные в базу данных, опубликовать через XML-RPC? Постарайтесь быть более конкретным.

Wyck Wyck
11 сент. 2011 г. 20:08:40

Загрузить json-ленту. Например, на сайте WordPress должна быть форма поиска, при отправке которой будет выполняться GET-запрос к API. API вернет объекты в формате json, и эти результаты нужно вывести на странице сайта WordPress.

tahir tahir
11 сент. 2011 г. 20:22:56

@tahir Я пытаюсь сделать то же самое. Не могли бы вы поделиться, как вам удалось достичь цели?

SAHM SAHM
3 апр. 2014 г. 06:24:11
Все ответы на вопрос 4
0
10

Краткое введение в разработку для WordPress, которое может помочь или запутать вас:

Главное, что нужно помнить: всё это просто PHP. И ещё: не редактируйте основные файлы WordPress, потому что у вас возникнут проблемы при обновлении до новой версии. Единственный код, который вы должны редактировать, — это код плагинов и тем.

Если вам нужно только добавить что-то к существующей странице, может сработать простое редактирование нужного файла темы. Однако, если вам нужно сделать что-то более сложное (например, добавить дополнительное "представление" по определённому URL), вам нужно добавить код в место, которое загружается раньше в процессе загрузки WordPress.

Причина в том, что WordPress всегда выполняет запрос к записям на основе URL. Если вы перейдёте на /category/banana/, он запросит записи категории banana и загрузит соответствующий шаблон, в котором вам останется только пройтись по записям и отобразить их. Однако, если вы перейдёте на /custom-view/, WordPress, скорее всего, не найдёт записей и загрузит шаблон 404 — и у вас не будет простого способа это исправить!

Некоторые решают эту проблему, создавая "заглушки страниц": они создают в WordPress страницу, содержимое которой не важно, важен только шаблон — там они делают всё, что хотят. Это не слишком элегантно, но работает. Чистый способ — определить дополнительные правила перезаписи, которые сообщат WordPress, что /custom-view/ — это допустимый URL, но там должно происходить что-то другое.

Если вы хотите сделать это, вам нужно подключиться к ядру WordPress. Ключевое слово здесь — подключиться, а не изменить. В WordPress есть действия (actions) и фильтры (filters). Действие — это просто объявление ("Эй, мы сейчас пишем тег <head>. Хотите что-то добавить?"). Фильтр позволяет изменить переменную ("Вот заголовок записи. Если хотите его изменить, верните новое значение"). Конечно, теперь задача — понять, какие действия и фильтры использовать. Это зависит от выбранного способа (заглушки страниц или новые правила перезаписи), поэтому я не буду углубляться в детали.

Вы определяете действия и фильтры, которые хотите использовать, в файле плагина или в файле functions.php вашей темы. Они особенные, потому что загружаются во время загрузки WordPress, то есть до выполнения основного запроса и так далее. Файл плагина — это просто PHP-файл, помещённый в директорию wp-content/plugins/, с особым заголовком, чтобы WordPress мог прочитать его название и отобразить в административной панели, где вы можете включать и отключать его (так что плагин можно оставить в директории, но временно деактивировать).

11 сент. 2011 г. 21:26:19
0

Основы

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

JSON

Вы можете использовать встроенный в ядро скрипт json2, чтобы предоставить "безопасный" API.

Пример JSON

Остальное будет выглядеть примерно так:

$response = json_encode( array( 
     'data' => $your_output 
) );
header( "Content-Type: application/json" );
echo $response;

XML Rpc

В Codex также есть информация о "XML Rpc".

HTTP API

Еще одна возможность — это HTTP-запросы. Обязательно ознакомьтесь со ссылками внизу страницы.


Вебхуки

Это дополнительная информация, так как она больше связана с предоставлением потребляемого API. Объяснение здесь. Также существует плагин под названием HookPress, который выполняет эту работу за вас. Несколько слайдов от автора также доступны.

11 сент. 2011 г. 20:13:35
0

Я предполагаю, что вы знаете PHP? Или это тоже барьер?

По сути, плагины в WordPress — это соглашение о том, как упаковать PHP-код, чтобы он распознавался и обрабатывался ядром WordPress. Это формат, а не функциональность.

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

Думайте о своем коде в контексте WordPress как о include (технически так оно и будет). Отсюда уже зависит от ваших потребностей и ресурсов, какая часть кода будет переписана специально для WordPress.

11 сент. 2011 г. 21:19:42
0

Да, это возможно.

Большинство плагинов создаются с помощью так называемых хуков:

Например:

add_action("hook", "function")

Довольно просто создать собственный плагин, как только вы поймете, как работает эта структура... Я бы посоветовал вам ознакомиться с ней. Наиболее полным источником информации (хотя и не самым организованным - как php.net) является WordPress Codex.

12 сент. 2011 г. 03:22:36