Споживаєте зовнішній API в WordPress?


9

У мене є клієнт, який має веб-сайт WordPress, і він хоче розширити його, щоб додати нові функції. Ці функціональні можливості включені в веб-сайт, який я вже робив (своєрідна пошукова система в базі даних, з деякими фільтрами), і яка знаходиться в стадії нових удосконалень.

Що я планую зробити, це створити json api свого веб-сайту (з усіма функціями пошуку по моїй базі даних) і зробити так, щоб веб-сайт Wordpress використовував цей api, тоді мені потрібно буде лише створити представлення для показу результатів пошуку.

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


Що саме ви намагаєтеся зробити, прочитати json-канал у wordpress, вставити дані в базу даних, опублікувати через XML-RPC, спробувати і бути більш зрозумілим.
Wyck

читати канал json для прикладу, сайт wordpress повинен містити форму пошуку, при надходженні він виконуватиме виклик get на api, api поверне об’єкти в json, і я повинен вивести ці результати на сторінку сайту wordpress
tahir

1
@tahir Я намагаюся зробити це саме. Чи могли б ви поділитися тим, як ви досягли своєї мети?
SAHM

Відповіді:


9

Короткий буквар щодо розробки WordPress, який може допомогти вам або заплутати:

Головне пам’ятати: це все лише PHP. А також: не редагуйте основні файли WordPress, тому що ви отримаєте проблеми, коли пізніше оновите до нової версії. Єдиний код, який ви повинні редагувати, - це плагіни та теми.

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

Причиною цього є те, що WordPress завжди робить для вас запит на основі URL-адреси. Якщо ви переходите до /category/banana/нього, він запитуватиме публікації категорії bananaта завантажує правильний файл шаблону, де вам потрібно лише перекинути та відобразити їх. Однак якщо ви перейдете до програми /custom-view/, WordPress, ймовірно, не знайде жодної публікації та завантажить шаблон 404 - це не дає простого способу відновлення!

Деякі люди вирішують це, створюючи "заглушки сторінок": вони створюють Сторінку в WordPress, де вміст не важливий, лише шаблон: там вони роблять все, що захоплюють. Це хакі, але це працює. Чистим способом було б визначити додаткові правила перезапису , які дозволять WordPress знати, що /custom-view/це дійсна URL-адреса, але там має відбуватися щось інше.

Якщо ви хочете це зробити, вам потрібно підключитися до основної системи WordPress. Важлива частина тут - зачеплення , а не зміна . У WordPress є дії та фільтри . Дія - це лише оголошення ( "Ей, ми зараз пишемо <head>тег. Чи хочете ви ще щось додати?" ). Фільтр дозволяє змінювати змінну ( "Це заголовок публікації. Якщо ви хочете змінити його, поверніть нове значення" ). Звичайно, фокус зараз полягає в тому, щоб знати, які дії та фільтри слід використовувати. Це залежить від обраного вами способу (заглушки сторінок або нові правила перезапису), тому я тут не буду вникати в деталі.

Ви визначаєте дії та фільтри, які ви хочете використовувати у файлі плагіна або у файлі function.php вашої теми. Вони особливі тим, що завантажуються під час завантаження WordPress , тому перед виконанням основного запиту тощо. Файл плагіна - це лише файл PHP, розміщений у wp-content/plugins/каталозі, зі спеціальним заголовком, щоб WordPress міг прочитати його ім’я та відобразити його в області адміністрування, де ви можете його ввімкнути та відключити (ви можете залишити плагін у каталозі, але тимчасово відключити його).


2

Основи

Ви повинні обійти основи для плагінів та тем. Коротше кажучи: вони є доповненням до функціональних можливостей Wordpress. Зазвичай "Плагіни" більше стосуються функціональності, а "Теми" - більше про "перегляд". Ви також можете прочитати трохи про "Плагін 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-запити . Не забудьте прочитати посилання внизу посилання.


Webhooks

Це додатково, оскільки йдеться більше про надання споживчого API. Пояснення тут . А ще є плагін під назвою HookPress, який робить цю роботу за вас. Деякі слайди також від автора.


1

Я припускаю, що ви знаєте PHP? Або це також є бар'єром?

По суті, плагіни в WordPress - це звичайний спосіб упаковки PHP-коду, щоб його розпізнавали та обробляли ядро ​​WordPress. Це формат, а не функціональність.

Що стосується фактичних функціональних можливостей, то ви можете в значній мірі запустити довільний PHP, але добре використовувати API API WP для сумісності та надійності.

Подумайте про свій код у контексті WP як include(що це буде технічно). Звідси саме сфера ваших потреб та ресурсів визначатиме, яка частина його буде переписана, щоб бути специфічною для WordPress.


0

Так, можливо.

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

наприклад:

add_action("hook", "function")

досить просто створити собі плагін, як тільки ви дізнаєтеся, як працює цей фреймворк, ну ... я б радив фарміліалізувати себе з ним, наймасштабнішим місцем знань (хоч і не самим організованим - наприклад, php. net) - це кодекс WordPress .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.