Plugin di Wordpress genera errore "Call to undefined function get_option()"

ciao, sto facendo un plugin per wordpress, mi capita sempre lo stesso problema con i plugin wordpress che quando con ajax mi carico il testo stampato da una pagina php ( richiamata direttamente ) mi da errore sulle funzioni wordpress, cioè quando la richiamo direttamente è come se fosse fuori da wordpress,

anche se faccio l'include del file principale del plugin mi da errore ad es. su get_option( 'siteurl' ), a qualcuno è capitato?? come si può risolvere?

 io devo fare semplicemete questo, che compilando un form di registrazione utente se l'utente è gia registrato quando inserisce email e password si autocompila tutto il form, ajax mi sta funzionando ma non riesco a prendermi gli altri campi del db perchè mi da errore su

Call to a member function get_results() on a non-object

anche se c'è

global $wpdb;

(devo usare ajax perchè ci sono dei tab con jquery se lo faccio con php solo se ricarico la pagina torna al primo tab)

vi ringrazio se mi aiutate

inviato 6 anni fa
surferbloggy
modificato 5 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Sbagli approccio nella creazione dell'esecuzione del tuo plugin.

I plugin per Wordpress per funzionare hanno bisogno di alcuni ancoraggi. Se tu richiami direttamente gli script ottieni per forza un errore: non sono istanziati i vari oggetti e variabili del cms.

Leggi qua:

http://codex.wordpress.org/Writing_a_Plugin#WordPress_Plugin_Hooks

risposto 6 anni fa
Mario Santagiuliana
X 1 X

grazie, il tutorial l'ho letto e plugin in questo modo già ne ho fatto anche un'altro che utilizza gli hooks di wordpress ed è completo e funzionante , quest'altro pure funziona, però quando vado ad aggiungere ajax che carica il testo di una pagina chiamandola direttamente mi si presenta questo problema che ancora non ho risolto, cioè quando  carico una pagina php con ajax così:

xmlhttp.open("GET","wp-content/plugins/mioplugin/email-ajax.php?email="+str+"&pass="+pass+"&sid="+sid,true);

xmlhttp.send();

se ci sono script con funzioni wordpress mi da errore, se c'è solo testo funziona,

avevo pensato di risolvere includendo il file principale del plugin file che funziona ma se richiamo direttamente anche quel file  mi da errore nella prima funzione wordpress di quel file

 io non riesco a trovare una soluzione :( :( :(

risposto 6 anni fa
surferbloggy
X 0 X

Non so se può esserti utile.

Hai già letto questo articolo:

http://codex.wordpress.org/AJAX_in_Plugins

risposto 6 anni fa
Mario Santagiuliana
X 0 X

grazie tante , non lo conoscevo, ora vedo se riesco a risolverlo!! :)

risposto 6 anni fa
surferbloggy
X 0 X

ciao! l'articolo era proprio quello che cercavo, infatti seguendo attentamente ho inserito ajax nel plugin - come vogliono loro non a modo mio come stavo facendo - anzi qua lo dice chiaramente che non si può chiamare una pagina direttamente ma si deve mettere tutto il codice necessario nel file principale di plugin

Request URL: We need to send our request to a plugin PHP file. This should be the main plugin PHP file. In case you want it to be a separate PHP file, bare in mind that you won't be able to access the Wordpress global variables, e.g. $wpdb, since separate files have absolutely no visibility to any part of WordPress at all.

ora ho bisogno di un aiuto: questo è il codice che mi preveva i dati che mi servono del db

if(is_array($loginchecklist)) {
         
         foreach($loginchecklist as $logincheck) {
            
            $results = $logincheck->client_name.",".$logincheck->client_surname." ok";
         }
      }else{
         $results = "non esistono questi username e password nel nostro database or query failed";
      }
      
            
      if( $error ) {
         die( "alert('$error')" );
      } 
      
      // Compose JavaScript for return
      die( "document.getElementById('$results_id').innerHTML = '$results'");

funziona e nell'ultima riga da un'istruzione javascript che mi stampa tutti i dati dentro il div richiamato da $results_id, e questo funziona io però vorrei dare più istruzioni che me li stampano su ogni campo di testo senza ricaricare la pagina

così da errore ma da l'idea:

die( "document.getElementById('$results_id').innerHTML = '$results'");

die( "document.getElementById('campo_nome').innerHTML = '$logincheck->client_name'");

die( "document.getElementById('campo_cognome').innerHTML = '$logincheck->client_surname'");

die( "document.getElementById('campo_citta').innerHTML = '$logincheck->client_town'");

die( "document.getElementById('campo_telefono').innerHTML = '$logincheck->client_phone'");

come potrei fare in php e javascript a fargli fare questo ho provato anche con una funzione javascript così ma da errore: die( "load_data('$logincheck->client_name')");

vi ringrazio se mi aiutate

risposto 6 anni fa
surferbloggy
X 0 X

L'ultima riga è quella che ti dovrebbe dare la soluzione migliore per ottenere ciò che desideri.

Che errore ti viene riportato esattamente?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

se metto

die( "load_data('$clientname')");

 e aggiungo questa funzione javascript:

function load_data(name)
      {
         prendiElementoDaId("town").innerHTML =name;
      };

non da errore ma non da nessun output

ho provato a fare una funzione php che ingloba javascript ma lo stesso:

function load_data(){
   

   ?>
      <script type="text/javascript">
      //<![CDATA[
   function fill_fields()
   {
      prendiElementoDaId("town").innerHTML ="ciao";
   };
   fill_fields()
      //]]>
      </script>
      <?php
      
}

sostituendo l'ultima riga con

 echo load_data();

 niente, devo dire che le funzioni javascript all'onclick o all'onchange mi funzionano solo se metto 'javascript:call_function', ma nemmeno così funziona:

die( "javascript:load_data()");

 quest'ultima riga non so come scriverla per fare funzionare il javascript

risposto 6 anni fa
surferbloggy
modificato 6 anni fa
X 0 X

se metto

die( "load_data('$clientname')");

 e aggiungo questa funzione javascript:

function load_data(name)
      {
         prendiElementoDaId("town").innerHTML =name;
      };

non da errore ma non da nessun output

Per forsa, non dai neussun echo e/o nessun return della funzione.

risposto 6 anni fa
Mario Santagiuliana
modificato 6 anni fa
X 0 X

grazie, ma quello è javascript non lo so qual è l'istruzione simile ad echo in javascript, invece ho provato anche così ma niente

   echo "<SCRIPT LANGUAGE='javascript'>";
      
      echo "document.getElementById('$results_id').innerHTML ='$results';";
      echo "document.getElementById('town').innerHTML='ciao town';";
      echo "document.getElementById('zipcode').innerHTML='ciao zipcode';";
      echo "document.getElementById('company').innerHTML='ciao company';";
      echo "document.getElementById('mobile').innerHTML='ciao mobile';";
      echo "</SCRIPT>";
risposto 6 anni fa
surferbloggy
X 0 X

lo sapevo che era una cretinata:

il primo era un div e andava bene così:

echo "document.getElementById('$results_id').innerHTML ='$results';";
      

il secondo era un campo di testo e ci andava value

      echo "document.getElementById('town').value ='ciao';";

grazie, ciao!!

risposto 6 anni fa
surferbloggy
modificato 6 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda