cURL - Cómo enviar y obtener datos en WordPress
ANTECEDENTES
Después de que el usuario en dominio1 hace clic en un enlace hacia dominio2, necesito enviar también los datos del usuario (nombre de usuario, correo electrónico,..) desde servidor1/dominio1 a servidor2/dominio2 y guardarlo temporalmente en el servidor2/base de datos.
Ambos son sitios web WordPress.
TRABAJO ACTUAL
Digamos que, $url = 'http://mi-dominio2.com'
;
Hasta ahora descubrí que cURL puede hacer este trabajo:
function curlTest($url, $fields){
try{
$ch = curl_init($url);
if (!$ch)
throw new Exception('Falló la inicialización');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($fields)));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (!$response)
throw new Exception(curl_error($ch), curl_errno($ch));
curl_close( $ch );
return (int) $status; //estado 200 = éxito
} catch(Exception $e) {
trigger_error(sprintf(
'Curl falló con el error #%d: %s',
$e->getCode(), $e->getMessage()),
E_USER_ERROR);
}
}
o orientado a objetos como se describe aquí.
Más tarde encontré una solución de WordPress como esta:
$response = wp_remote_post( &url, array( 'data' => $fields) );
explicado aquí.
La llamada cURL parece ser exitosa, pero no tengo idea de cómo obtener los datos en el otro servidor. Hasta ahora puse los datos del usuario en el servidor1 en un array ($fields) y uso POST para enviarlo al servidor2. Pero ¿cómo puedo obtener los datos en el servidor2?
Según el ejemplo de Ed Cradock debajo de la documentación oficial parece ser posible capturar la solicitud en el otro lado con este código:
if($_SERVER['REQUEST_METHOD'] == 'PUT')
{
parse_str(file_get_contents('php://input'), $requestData);
print_r($requestData);
// Guardar los datos solicitados en la base de datos aquí
}
Pero no funciona para mí porque supongo que la URL está mal: http://mi-dominio2.com/<que-va-aqui?>
PREGUNTA
¿Cómo obtener los datos de una solicitud POST cURL con WordPress de forma segura?

wp_remote_get(), wp_remote_post() y wp_remote_request() deberían resolver tus dudas. Esta es la mejor práctica para WordPress.

¡Gracias! Ya he investigado bastante, pero no encuentro un ejemplo de cómo obtener los datos en el otro servidor. ¿Cómo puedo escuchar en el server2 los datos provenientes del server1? Supongo que tendré que escribir mi propia API, ¿no? ¿Existe alguna documentación? Un simple if($_POST['username']){ //hacer algo} no funcionará, ¿verdad?
