web-dev-qa-db-ja.com

ユーザーがワードプレスサイトに登録したときにjson形式のユーザーデータを別のサーバーに送信する方法 PHP

ユーザーがPHPのワードプレスサイトに登録したときに、json形式のユーザーデータを別のサーバーに送信する方法。私はサーバーのURLが好きです( http://1.2.3.4:49005/SingleMethodName=DomainManagementStripeService___DomainRegistration

ユーザーがワードプレスサイトに登録するとき、私はjsonフォーマットで私のサーバーに彼らの名前、電子メール、カスタムフィールドデータを送りたいです。ありがとう

編集-----私はこの目的のためにmu-pluginsを使っています、そして、以下は私がそれを使っているコードです。

<?php
add_action('init', 's2_payment_notification');
function s2_payment_notification()
{

if( isset($_POST['user_id'], $_POST['subscr_id'], $_POST['user_ip'],$_POST['user_piva']))
    {
        $user_id             = (integer)$_POST['user_id'];
        $subscr_id           = (string)$_POST['subscr_id'];
        $user_ip             = (string)$_POST['user_ip'];
        $user_piva           = (integer)$_POST['user_piva'];

        $s2member_subscr_id  = get_user_option('s2member_subscr_id', $user_id);
        $s2member_registration_ip = get_user_option('s2member_registration_ip', $user_id);
        $s2member_p_iva_fisc = get_user_option('p_iva_fisc', $user_id);

        $user_piva = wp_json_encode($s2member_p_iva_fisc);
        $user_ip = wp_json_encode($s2member_registration_ip);
        $subscr_id = wp_json_encode($s2member_subscr_id);

        wp_remote_post('http://1.2.3.123:49005/SingleMethodName=DomainManagementStripeService___DomainRegistration', [
            'headers' => ['content-type' => 'application/json'],
            'body' => array(
                'User_Id' => '$user_id', 
                'subscr_id' => '$subscr_id', 
                'user_ip' => '$user_ip',
                'user_piva' => '$user_piva'
                ),
        ]);
    }
    else {
        wp_remote_post('http://1.2.3.123:49005/SingleMethodName=DomainManagementStripeService___DomainRegistration', [
            'headers' => ['content-type' => 'application/json'],
            'body' => 'Everything is empty',
        ]);
    }

}
1
khan

これを行うための簡単な方法は、ユーザーがデータベースに追加された直後に起動するregister_userアクションフックを使用することです。コールバックに1つの変数$user_idを渡します。これは wp_safe_remote_post() に使用できます。

namespace StackExchange\WordPress;

function register_user( $user_id ) {
  $url = 'https://example.com';
  $args = [
    'user_id' => $user_id,
  ];
  \wp_safe_remote_post( $url, $args );
}
\add_action( 'register_user', __NAMESPACE__ . '\register_user' );
2
Nathan Johnson

POSTメソッドを使用してJSON形式でデータを送受信する

xhr = new XMLHttpRequest();
var url = "url";
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.onreadystatechange = function () { 
    if (xhr.readyState == 4 && xhr.status == 200) {
        var json = JSON.parse(xhr.responseText);
        console.log(json.email + ", " + json.password)
    }
}
var data = JSON.stringify({"email":"[email protected]","password":"101010"});
xhr.send(data);

GETメソッドを使用して受信データをJSON形式で送信する

xhr = new XMLHttpRequest();
var url = "url?data=" + encodeURIComponent(JSON.stringify({"email":"[email protected]","password":"101010"}));
xhr.open("GET", url, true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.onreadystatechange = function () { 
    if (xhr.readyState == 4 && xhr.status == 200) {
        var json = JSON.parse(xhr.responseText);
        console.log(json.email + ", " + json.password)
    }
}
xhr.send();

PHP を使用してサーバー側でJSON形式のデータを処理する

// Handling data in JSON format on the server-side using PHP
header("Content-Type: application/json");
// build a PHP variable from JSON sent using POST method
$v = json_decode(stripslashes(file_get_contents("php://input")));
// build a PHP variable from JSON sent using GET method
$v = json_decode(stripslashes($_GET["data"]));
// encode the PHP variable to JSON and send it back on client-side
echo json_encode($v);
2
Abhishek Pandey