ユーザーが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',
]);
}
}
これを行うための簡単な方法は、ユーザーがデータベースに追加された直後に起動する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' );
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);