Errore fatale: Chiamata a funzione non definita get_option()
Quando provo a inviare un'email... viene mostrato -
Errore fatale: Chiamata a funzione non definita get_option() in /home/junkie/public_html/sub_demo/wp-content/themes/scroller/includes/contact-form.php alla riga 9
Il mio codice=> contact-form.php
<?php
if($_POST)
{
//controlla se è una richiesta ajax, esce se non lo è
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
die();
}
$to_Email = "tanvir.focus@gmail.com"; //Sostituisci con l'indirizzo email del destinatario
$subject = 'Ah!! La mia email da Qualcuno là fuori...'; //Riga dell'oggetto per le email
//controlla che le variabili $_POST siano impostate, esce se manca qualcosa
if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userPhone"]) || !isset($_POST["userMessage"]))
{
die();
}
//Pulisce i dati di input usando filter_var() di PHP.
$user_Name = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
$user_Email = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
$user_Phone = filter_var($_POST["userPhone"], FILTER_SANITIZE_STRING);
$user_Message = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);
//validazione php aggiuntiva
if(strlen($user_Name)<4) // Se la lunghezza è minore di 4 genererà un errore HTTP.
{
header('HTTP/1.1 500 Il nome è troppo corto o vuoto!');
exit();
}
if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //validazione email
{
header('HTTP/1.1 500 Inserisci un email valida!');
exit();
}
if(!is_numeric($user_Phone)) //controlla che i dati inseriti siano numeri
{
header('HTTP/1.1 500 Solo numeri consentiti nel campo telefono');
exit();
}
if(strlen($user_Message)<5) //controlla messaggio vuoto
{
header('HTTP/1.1 500 Messaggio troppo corto! Inserisci qualcosa.');
exit();
}
//procede con l'invio dell'email PHP.
$headers = 'From: '.$user_Email.'' . "rn" .
'Reply-To: '.$user_Email.'' . "rn" .
'X-Mailer: PHP/' . phpversion();
@$sentMail = mail($to_Email, $subject, $user_Message .' -'.$user_Name, $headers);
if(!$sentMail)
{
header('HTTP/1.1 500 Impossibile inviare l\'email! Spiacente..');
exit();
}else{
echo 'Ciao '.$user_Name .', Grazie per la tua email! ';
echo 'La tua email è già arrivata nella mia casella di posta, devo solo controllarla.';
}
}
?>

Non vedo alcuna funzione get_option()
alla linea 9 o in qualsiasi altra parte del tuo codice.
Dopo una rapida ricerca su Google, la mia ipotesi è che il tuo problema sia lo stesso di questa domanda su stackoverflow
MODIFICA
Come proposto da @Ray nella domanda linkata, incolla questo nel tuo codice per verificare se wp-includes/option.php
è incluso:
$includedStuff = get_included_files();
print_r($includedStuff);
Se non lo è, includilo manualmente:
include_once('wp-includes\option.php');
Se questo risolve il tuo problema, non dimenticare di votare positivamente la risposta di Ray.

Per favore pubblica il codice rilevante da quella domanda/risposta che risolverà il problema dell'OP. Ricorda solo di dare credito alla persona che ha postato la soluzione, che suppongo sia Ray. Il motivo è che se questa domanda viene rimossa da SO, la tua risposta non sarà solo un link morto

@PieterGoosen, grazie per la correzione! Spero che la mia modifica risolva questo problema.

Se il tuo file contact-form.php si trova al di fuori dell'installazione di WordPress, dovrai assicurarti di includere il file wp-load.php sopra il tuo codice in questo modo:
<?php include '../../../wp-load.php'; ?>
/* Il resto del tuo codice qui */
Quanto sopra funziona per un file nella radice di una cartella del tema, ma se non sei sicuro di dove potrebbe trovarsi il tuo file .php nella struttura delle directory, puoi sempre utilizzare lo script seguente realizzato da Frankie Jarret:
$parse_uri = explode( 'wp-content', $_SERVER['SCRIPT_FILENAME'] );
require_once( $parse_uri[0] . 'wp-load.php' );
/* Il resto del tuo codice qui */
MODIFICA:
Si noti che la struttura dell'installazione di WP può essere modificata in modo che il file wp-content
si trovi al di fuori dell'albero di installazione, nel qual caso anche il secondo blocco di codice non funzionerebbe. Si tratta di un'eventualità rara, ma la funzionalità è presente e quindi deve essere considerata in uno scenario possibile.
Esistono altre possibilità da considerare che richiederebbero una revisione del codice per utilizzare azioni, filtri e le funzioni integrate di WordPress, evitando così di dover cercare di caricare manualmente le dipendenze corrette all'interno del file. Questo sarebbe il modo migliore per procedere, mentre le soluzioni sopra indicate sono semplicemente soluzioni rapide/economiche.

non dovresti mai cercare di indovinare dove sono installati i file core di WordPress, semplicemente non scrivere codice che dipende da questa conoscenza

@MarkKaplun mi scuso se ti ho frainteso, ma è proprio questo che il secondo snippet di codice risolve? Il primo blocco di codice mostra ciò che suggerisco di usare per raggiungere l'obiettivo richiesto, il secondo blocco affronta il fatto che il file core potrebbe non essere sempre 3 file indietro (../../../wp-load.php
) poiché dipenderebbe dalla posizione del tuo file .php personalizzato, e poi fornisce una soluzione estesa che risolve questa preoccupazione. O sto fraintendendo il tuo apparente disappunto?

in generale wp-content
potrebbe trovarsi al di fuori della struttura di installazione di WordPress. Tranne forse wp-admin, tutto il resto può essere in qualsiasi posizione casuale

... e anche se potresti essere in grado di fare tali supposizioni su un sito specifico, in generale è una cattiva abitudine di programmazione

@MarkKaplun sebbene sia un punto valido, lascerò questa risposta qui poiché mi è stata utile e spero possa aiutare qualcuno in futuro. Potrebbe non essere la soluzione migliore, ma è comunque una soluzione valida. Ho affrontato la tua preoccupazione con un 'modifica', grazie per avermelo fatto notare, ma devo ammettere che non ho mai lavorato con un sito WP che avesse una struttura così radicalmente modificata da rendere inefficace la soluzione sopra proposta. Detto ciò, so che è effettivamente possibile e mi piacerebbe vedere quale sarebbe il tuo workaround in questo caso specifico.
