Eroare fatală: Apel către funcția nedefinită get_option()
Când încerc să trimit un email... primesc eroarea -
Eroare fatală: Apel către funcția nedefinită get_option() în /home/junkie/public_html/sub_demo/wp-content/themes/scroller/includes/contact-form.php la linia 9
Codul meu=> contact-form.php
<?php
if($_POST)
{
//verifică dacă este o cerere ajax, iese dacă nu
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
die();
}
$to_Email = "tanvir.focus@gmail.com"; //Înlocuiește cu adresa de email a destinatarului
$subject = 'Ah!! Emailul meu de la cineva pe aici...'; //Subiectul pentru email
//verifică dacă variabilele $_POST sunt setate, iese dacă lipsește vreuna
if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userPhone"]) || !isset($_POST["userMessage"]))
{
die();
}
//Sanitizează datele introduse folosind filter_var() 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);
//validare PHP suplimentară
if(strlen($user_Name)<4) // Dacă lungimea este mai mică de 4 caractere va returna o eroare HTTP
{
header('HTTP/1.1 500 Numele este prea scurt sau gol!');
exit();
}
if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //validare email
{
header('HTTP/1.1 500 Te rugăm să introduci un email valid!');
exit();
}
if(!is_numeric($user_Phone)) //verifică dacă datele introduse sunt numere
{
header('HTTP/1.1 500 Doar numere sunt permise în câmpul telefon');
exit();
}
if(strlen($user_Message)<5) //verifică mesaj gol
{
header('HTTP/1.1 500 Mesajul este prea scurt! Te rugăm să scrii ceva.');
exit();
}
//continuă cu trimiterea emailului 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 Nu s-a putut trimite emailul! Ne pare rău..');
exit();
}else{
echo 'Bună '.$user_Name .', Îți mulțumim pentru email! ';
echo 'Emailul tău a ajuns deja în Inbox, tot ce trebuie să fac este să îl verific.';
}
}
?>

Nu văd nicio funcție get_option()
pe linia 9 sau oriunde altundeva în codul tău.
După o căutare rapidă pe Google, presupun că problema ta este aceeași ca această întrebare de pe stackoverflow
EDIT
După cum a sugerat @Ray în întrebarea menționată mai sus, adaugă acest cod pentru a verifica dacă wp-includes/option.php
este inclus:
$includedStuff = get_included_files();
print_r($includedStuff);
Dacă nu este inclus, include-l manual:
include_once('wp-includes\option.php');
Dacă funcționează, nu uita să votezi răspunsul lui Ray.

Te rog să postezi codul relevant din acea întrebare/răspuns care va rezolva problema OP-ului. Doar ține minte, te rog să dai credit persoanei care a postat soluția, care probabil va fi Ray. Motivul pentru aceasta este că, dacă această întrebare va fi ștearsă de pe SO, răspunsul tău nu va fi doar un link mort.

@PieterGoosen, mulțumesc pentru corectare! Sper că ediția mea rezolvă acest lucru.

Dacă fișierul tău contact-form.php există în afara instalării WordPress, va trebui să te asiguri că incluzi fișierul wp-load.php înaintea codului tău, astfel:
<?php include '../../../wp-load.php'; ?>
/* Restul codului tău aici */
Exemplul de mai sus funcționează pentru un fișier în directorul rădăcină al unui tema, dar dacă nu ești sigur unde se poate afla fișierul tău .php în structura de directoare, poți folosi întotdeauna scriptul de mai jos creat de Frankie Jarret:
$parse_uri = explode( 'wp-content', $_SERVER['SCRIPT_FILENAME'] );
require_once( $parse_uri[0] . 'wp-load.php' );
/* Restul codului tău aici */
EDIT:
Te rugăm să iei în considerare că structura instalării WP poate fi ajustată astfel încât fișierul wp-content
să fie în afara arborelui de instalare, caz în care al doilea bloc de cod nu va funcționa. Aceasta este o situație rară, dar funcționalitatea există și, prin urmare, trebuie luată în calcul într-un posibil scenariu.
Există și alte posibilități de luat în considerare care ar necesita revizuirea codului tău pentru a utiliza acțiuni, filtre și funcțiile încorporate ale WordPress, care te-ar scuti de încercarea de a încărca corect dependențele în fișierul tău. Aceasta ar fi cea mai bună abordare, soluțiile de mai sus sunt doar soluții rapide/ieftine.

nu ar trebui să încerci niciodată să ghicești unde sunt instalate fișierele de bază ale WordPress, pur și simplu nu scrie cod care depinde de astfel de cunoștințe

@MarkKaplun îmi cer scuze dacă te-am înțeles greșit, dar despre asta se ocupă al doilea fragment de cod? Primul bloc de cod arată ceea ce sugerez să folosim pentru a atinge scopul dorit, al doilea bloc de cod abordează faptul că fișierul de bază poate să nu fie întotdeauna la 3 fișiere înapoi (../../../wp-load.php
), deoarece asta ar depinde de locația fișierului tău personalizat .php, și apoi oferă o soluție extinsă care rezolvă această problemă. Sau am înțeles greșit nemulțumirea ta aparentă?

în general, wp-content
ar putea fi localizat în afara structurii de instalare WordPress. Cu excepția poate a wp-admin, orice altceva poate fi în orice locație aleatorie

.... și deși poți presupune astfel de lucruri despre un anumit site, este în general un obicei prost de programare

@MarkKaplun deși acesta este un punct valid, voi lăsa acest răspuns aici, deoarece m-a ajutat pe mine și sper să ajute pe cineva în viitor. Poate nu este cea mai bună soluție, dar este în continuare o soluție validă. Am abordat preocuparea ta cu un 'edit', îți mulțumesc pentru observație, dar trebuie să admit că nu am lucrat niciodată cu un site WP care avea o structură atât de puternic ajustată încât soluția de mai sus să nu funcționeze. Cu toate acestea, știu că este într-adevăr posibil și aș dori să văd care este soluția ta în acest caz specific.
