Est-il possible d'utiliser wp_remote_post pour envoyer des demandes de publication http à des API tierces? Je ne pouvais pas enregistrer correctement l'objet utilisateur en tant que variable javascript. J'espérais donc pouvoir faire une requête http avec php et gérer la manipulation de javascript dans mon application de nœud express.
Tentative en cours:
function identify_user() {
echo "made it into identify user";
if( is_user_logged_in()):
$current_user = wp_get_current_user();
$user = [];
$user['id'] = $current_user->ID;
$user['user_login'] = $current_user->user_login;
$user['user_email'] = $current_user->user_email;
$user['user_firstname'] = $current_user->user_firstname;
$user['user_lastname'] = $current_user->user_lastname;
$user['display_name'] = $current_user->display_name;
$response = wp_remote_post( 'myapp.com/endpoint', array(
'method' => 'POST',
'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
'body' => json_encode($user)
)
);
if ( is_wp_error( $response ) ) {
$error_message = $response->get_error_message();
echo "Something went wrong: $error_message";
} else {
print_r( $response );
}
endif;
}
add_action( 'wp_login', 'identify_user' );
Je ne parviens pas à résoudre ce code car aucun de mes appels d'écho ne se connecte à la console. J'ai vu que vous pouvez exécuter error_log (quelque chose), mais vous n'avez pas réussi à le faire fonctionner non plus.
Le "corps" doit être un tableau, n'incluant pas la pièce "json_encode ($ user)".
$response = wp_remote_post( 'myapp.com/endpoint', array(
'method' => 'POST',
'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
'body' => $user
)
);
J'ai cela dans ma fonction car j'ai également eu des problèmes avec le corps étant un objet:
if (is_object($user) && !is_array($user))
$user = json_decode(json_encode($user), true);
$body = $user;
En ce qui concerne 'run error_log (quelque chose) ...' avec lequel vous rencontrez des problèmes, essayez La fonction wrapper de #David Lee
Fondamentalement, vous pouvez appeler
write_log('THIS IS THE START OF MY CUSTOM DEBUG');
// or log data like objects
write_log($object_you_want_to_log);
Je ne sais pas ce que je ferais sans ça.
Veuillez essayer ci-dessous le code pourrait être une aide pour vous.
function identify_user() {
if( is_user_logged_in()):
$current_user = wp_get_current_user();
$_id = $current_user->ID;
$_email = $current_user->user_email;
$user = json_encode(array("user_id"=>$_id,"user_email"=>$_email));
$curl = curl_init("myeNDPOINT");
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS,$user);
curl_setopt($ch, CURLOPT_HTTPHEADER,array('Content-Type:application/json'));
curl_exec( $curl );
curl_close( $curl );
endif;
}
add_action( 'wp_enqueue_scripts', 'identify_user');
Vous pouvez essayer le code ci-dessous pour wp_remote_post.might, il vous manque le paramètre de post url distant.
Aussi, j'ai remarqué que vous convertissez une variable utilisateur au format json 2 fois, ce qui est faux.
$response = wp_remote_post($url, array(
'method' => 'POST',
'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
'httpversion' => '1.0',
'sslverify' => false,
'body' => json_encode($user)
);