WP_Remote_Get No funciona

4 feb 2017, 18:28:27
Vistas: 20K
Votos: 1

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.

1
Comentarios

¿Estás ejecutando esto desde un trabajo "cron" de WP?

kaiser kaiser
5 feb 2017 03:48:24
Todas las respuestas a la pregunta 2
0

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']; ?>
4 feb 2017 21:30:38
0

¿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.

4 feb 2017 19:08:38