WP_Remote_Get Non Funzionante

4 feb 2017, 18:28:27
Visualizzazioni: 20K
Voti: 1

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?

1
Commenti

Stai eseguendo questo da un job "cron" di WordPress?

kaiser kaiser
5 feb 2017 03:48:24
Tutte le risposte alla domanda 2
0

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

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.

4 feb 2017 19:08:38