WP_Remote_Get nu funcționează
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?

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']; ?>

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