WP_Remote_Get nu funcționează

4 feb. 2017, 18:28:27
Vizualizări: 20K
Voturi: 1

Am un plugin care folosește wp_remote_get() și nu funcționează pe serverul meu nginx, așa că am decis să testez acest lucru.

Am creat un fișier numit test.php și am inserat:

<?php $response = wp_remote_get( 'http://www.domain.com/mytest.php' );

print $response ['body']; ?>

Când rulez acest fișier primesc eroarea:

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

Nu înțeleg de ce această funcție ar fi nedefinită, având în vedere că face parte din nucleul WordPress?

1
Comentarii

Rulezi acest lucru printr-un job "cron" în WordPress?

kaiser kaiser
5 feb. 2017 03:48:24
Toate răspunsurile la întrebare 2
0

Conceptul de bază al API-ului HTTP este să se asigure că transportul va fi efectuat. Practic, utilizează 5 metode diferite de transport și alege cea mai bună în funcție de configurația serverului tău. Așadar, este puțin probabil să fie o problemă de compatibilitate cu wp_remote_get() și serverul tău.

În plus, dacă WordPress nu este încărcat, adăugarea unei acțiuni nu va ajuta, va eșua la fel cu eroarea de funcție nedefinită, dar de data aceasta pe add_action.

Deci, practic, îți lipsește WordPress. Pentru teste, ai putea face asta (presupunând că fișierul tău se află în rădăcina instalării 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

Încerci să accesezi fișierul test.php direct? Dacă da, atunci WordPress nu va fi încărcat, așa că funcția wp_remote_get() nu va funcționa.

Pentru a folosi wp_remote_get, trebuie să te asiguri că WordPress este încărcat. Încearcă să folosești hook-ul wp_loaded:

add_action( 'wp_loaded', function() {
  $response = wp_remote_get( 'https://example.com/' );
  print $response[ 'body' ];
} );

Există posibilitatea ca serverul tău să fie configurat în așa fel încât metodele folosite de wp_remote_get să nu fie disponibile pentru WordPress. În acest caz, asigură-te că curl sau wget sunt instalate pe server.

4 feb. 2017 19:08:38