WP_Remote_Get No funciona
Tengo un plugin que usa wp_remote_get()
y no está funcionando en mi servidor nginx, así que decidí probarlo.
Creé un archivo llamado test.php
e inserté:
<?php $response = wp_remote_get( 'http://www.domain.com/mytest.php' );
print $response ['body']; ?>
Cuando ejecuto este archivo obtengo el error:
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
No puedo entender por qué esta función aparece como indefinida, dado que es parte del núcleo de WordPress.

El concepto mismo de la API HTTP es asegurar que el transporte se realice. Básicamente utiliza 5 métodos de transporte diferentes y elige el mejor según la configuración de tu servidor. Por lo tanto, es poco probable que sea un problema de compatibilidad con wp_remote_get()
y tu servidor.
Además, si WordPress no está cargado, añadir una acción no ayudará, fallará de la misma manera con un error de función indefinida, pero esta vez en add_action
.
Básicamente, te falta WordPress. Para propósitos de prueba podrías hacer esto (asumiendo que tu archivo está en la raíz de la instalación de WordPress):
<?php
require_once( 'wp-load.php' );
$response = wp_remote_get( 'http://www.domain.com/mytest.php' );
print $response ['body']; ?>

¿Estás intentando acceder directamente a tu archivo test.php? Si es así, WordPress no estará cargado, por lo que wp_remote_get()
no funcionará.
Para usar wp_remote_get
necesitas asegurarte de que WordPress esté cargado. Intenta enganchándote a wp_loaded
:
add_action( 'wp_loaded', function() {
$response = wp_remote_get( 'https://example.com/' );
print $response[ 'body' ];
} );
Existe la posibilidad de que tu servidor esté configurado de tal manera que los métodos utilizados por wp_remote_get
no estén disponibles para WordPress. Si ese es el caso, asegúrate de que curl o wget estén instalados en el servidor.
