получить массив POST с другого сайта в wordpress

240
11 февраля 2018, 01:08

Есть 2 сайта из первого надо отправить массив POST, а на втором принять и обработать, делаю таким образом: На сайте "http://test1.com" отправляю таким методом данные POST на "http://test2.com"

$url = 'http://test2.com';
$params = array(
    'data_send' => $data_send, //$_POST['data_send']
);
 file_get_contents($url, false, stream_context_create(array(
    'http' => array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => http_build_query($params)
    )
)));

На "http://test2.com" в теме function.php принимаю:

    if(isset($_POST['data_send'])){
var_dump($_POST['data_send']);}

Но ничего нет, на чистом PHP такой пример у меня работал, может кто подскажет как на wordpress такое правильно реализовать

Answer 1

Отправка запроса на сайт test2.com:

$body   = array(
    'data_send' => $data_send,
);
$result = wp_remote_post( 'http://test2.com', array(
    'method'      => 'POST',
    'redirection' => 1,
    'httpversion' => '1.0',
    'blocking'    => true,
    'headers'     => array(),
    'body'        => $body,
    'cookies'     => array(),
) );
if ( is_wp_error( $result ) ) {
    // вернуть ошибку
}
$body     = $result['body'];
$body_array     = json_decode( $body );
$success = $body_array->success;
if ( ! $success ) {
    // вернуть ошибку
}
$data = $body_array->data; // Это ответ от test2.com

Приём, обработка запроса и отправка ответа на сайте test2.com:

add_action( 'init', 'get_request' );
function get_request() {
    if ( isset( $_POST[ 'data_send' ] ) ) {
        $data = $_POST[ 'data_send' ];
        // Обработка данных,
        // установка флага $result
        // создание (если нужно) массива возвращаемых данных $data
        if ( $result ) {
            wp_send_json_success( $data );
        } else {
            wp_send_json_error();
        }
    }
}
READ ALSO
Не записывает в многомерный массив

Не записывает в многомерный массив

Изначально файл datajson пустой

201
Не выполняется php в html файлах

Не выполняется php в html файлах

Я добавил вhtaccess запись AddType application/x-httpd-php

208
Как разрабатывать через связку PhpStorm + Docker?

Как разрабатывать через связку PhpStorm + Docker?

В интернете куча информации о докере по базовым вещам, таких как "как скачать образ", "как запустить контейнер", но почти ничего нет о том, что...

334
закрыть прямой доступ к странице, но оставить возможность для ajax подгружать эту страницу на сайт

закрыть прямой доступ к странице, но оставить возможность для ajax подгружать эту страницу на сайт

Пример, есть страница indexphp на нее подгружаем с помощью ajax некий контент со страницы content

242