J'ai un plugin qui utilise wp_remote_get()
et il ne fonctionne pas sur mon serveur nginx alors j'ai décidé de le tester.
J'ai créé un fichier appelé test.php
et inséré:
<?php $response = wp_remote_get( 'http://www.domain.com/mytest.php' );
print $response ['body']; ?>
Quand j'exécute ce fichier, j'obtiens une erreur:
2017/02/04 16:22:31 [error] 16573#16573: *461100 FastCGI sent in stderr:
…
"PHP message: PHP Fatal error: Uncaught Error: Call to undefined function
wp_remote_get() in /var/www/html/wp-content/themes/x-child/test.php:1
Je ne peux pas dire pourquoi ce serait une fonction non définie, étant donné que cela fait partie du noyau de wordpress?
Le concept même de l'API HTTP est de s'assurer que le transport sera effectué. Il utilise 5 méthodes de transport différentes et choisit la meilleure en fonction de la configuration de votre serveur. Il est donc peu probable qu'un problème de compatibilité entre wp_remote_get()
et votre serveur.
De plus, si WP n'est pas chargé, l'ajout d'une action ne résoudra pas le problème avec une erreur de fonction non définie, mais cette fois sur add_action
.
Donc, fondamentalement, WordPress vous manque, vous pouvez le faire à des fins de test (en supposant que votre fichier se trouve à la racine de WP installation):
<?php
require_once( 'wp-load.php' );
$response = wp_remote_get( 'http://www.domain.com/mytest.php' );
print $response ['body']; ?>
Essayez-vous d’accéder directement à votre fichier test.php? Si tel est le cas, WordPress ne sera pas chargé, donc wp_remote_get()
ne fonctionnera pas.
Pour utiliser wp_remote_get
, vous devez vous assurer que WordPress est chargé. Essayez de vous connecter à wp_loaded
:
add_action( 'wp_loaded', function() {
$response = wp_remote_get( 'https://example.com/' );
print $response[ 'body' ];
} );
Il est possible que votre serveur soit configuré de telle sorte que les méthodes utilisées par wp_remote_get
ne soient pas disponibles pour WordPress. Si c'est le cas, assurez-vous que curl ou wget est installé sur le serveur.