Пользовательский шаблон страницы Wordpress и WP-API

Мой сайт Wordpress использует настраиваемые страницы шаблонов, подобные этой:

<php
 /* 
  Template Name : project_costs
 /*

get_header ();

// set default vars or user received
require("my_forms.php");
// pull data from db and calculate
require("project_calculation. php");
// create page
require("content. php");
...

На моей пользовательской странице project_costs.php выполняются следующие действия:

  1. Получение и установка введенных пользователем переменных из форм страницы (POST/GET).
  2. Вытягивать данные из базы.
  3. Сделайте некоторые расчеты и изменения.
  4. Создает страницу для пользователя.

Я хочу интегрировать angular.js с плагином WP-API. Плагин просто извлекает необработанные данные из базы данных (шаг 2) и отправляет их во внешний интерфейс (шаг 4). Таким образом, страницы и шаблоны не используются, поскольку страница не перезагружалась.

Я хочу сначала передать данные в свой класс php (шаг 3), а затем передать измененные данные в WP-API.

Есть ли в WP-API функция для вызова моего PHP-файла или функции?

Любые советы, образцы или ссылки будут высоко оценены.

Спасибо.


person Mindaugas    schedule 16.01.2016    source источник
comment
Я не уверен, чего ты хочешь. Вы можете создавать собственные классы для добавления новых функций в API.   -  person Skatox    schedule 16.01.2016
comment
Отметьте перехват AJAX в Wordpress.   -  person brasofilo    schedule 17.01.2016
comment
Я устанавливаю плагин wp-api. когда я набираю адресную строку wp-json/v2/posts/122, я получаю полный пост и все подробности поста в формате json. Но если я наберу пользовательский идентификатор сообщения wp-json/v2/posts/125, я получу массив json, в котором все подробности сообщения, но вместо шаблона данных = имя моего шаблона.php.   -  person Mindaugas    schedule 21.01.2016
comment
Таким образом, вместо данных в браузер отправляется просто имя шаблона, что бесполезно. Я хочу выполнить этот файл и отправить вывод в браузер   -  person Mindaugas    schedule 21.01.2016


Ответы (1)


Итак, я работаю над огромным проектом, который включает в себя несколько заменителей API/Angular для #WordPress. Один файл — это пользовательский endpoint-boilerplate.php. Пока это работает как шарм, но любой вклад будет оценен.

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

<?php 
/* ------------------------------------------------------------------------ *  
    A great example of custom endpoints is the PHP in wp-api-menus plugin
* ------------------------------------------------------------------------ */

// hook into rest_api_init and register a new api route
add_action( 'rest_api_init', function () {

register_rest_route( 
    'custom-endpoint/v2',   // namespace
    '/author/(?P<id>\d+)',  // route
    array(                  // options
        'methods'  => 'GET',
        'callback' => 'my_awesome_func',
        // 'args'     => array(
        //     'context' => array(
        //     'default' => 'view',
        //     ),
        // ) 
    )
);

});


 function my_awesome_func( $data ) {
    $posts = get_posts( array(
        'author' => $data['id'],
    ) );

    if ( empty( $posts ) ) {
        return null;
    }

    return $posts[0]->post_title;
}

Таким образом, ваш звонок будет от get до http://yourproject.com/wp-json/custom-endpoint/v2/author/1

person Ben Racicot    schedule 03.03.2016