WP_Remote_Get Non Funzionante
Ho un plugin che utilizza wp_remote_get()
e non funziona sul mio server nginx, quindi ho deciso di testarlo.
Ho creato un file chiamato test.php
e ho inserito:
<?php $response = wp_remote_get( 'http://www.domain.com/mytest.php' );
print $response ['body']; ?>
Quando eseguo questo file ottengo questo errore:
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
Non riesco a capire perché questa funzione risulti non definita, dato che fa parte del core di WordPress?

Il concetto stesso dell'API HTTP è garantire che il trasporto venga effettuato. Utilizza fondamentalmente 5 diversi metodi di trasporto e sceglie il migliore in base alla configurazione del tuo server. Quindi è improbabile che ci sia un problema di compatibilità con wp_remote_get()
e il tuo server.
Inoltre, se WordPress non è caricato, aggiungere un'azione non aiuterà, fallirà nello stesso modo con un errore di funzione non definita ma questa volta su add_action
.
Quindi in pratica ti manca WordPress, a scopo di test potresti fare così (assumendo che il tuo file sia nella radice dell'installazione di WP):
<?php
require_once( 'wp-load.php' );
$response = wp_remote_get( 'http://www.domain.com/mytest.php' );
print $response ['body']; ?>

Stai cercando di accedere direttamente al tuo file test.php? Se è così, WordPress non sarà caricato, quindi wp_remote_get()
non funzionerà.
Per utilizzare wp_remote_get
devi assicurarti che WordPress sia caricato. Prova ad agganciarti a wp_loaded
:
add_action( 'wp_loaded', function() {
$response = wp_remote_get( 'https://example.com/' );
print $response[ 'body' ];
} );
C'è la possibilità che il tuo server sia configurato in modo tale che i metodi utilizzati da wp_remote_get
non siano disponibili per WordPress. In tal caso, assicurati che curl o wget siano installati sul server.
