richiamare una funzione esterna

ciao! sto facendo un plugin per wordpress per la prima volta, il plugin si appoggia ad un altro plugin che ha una classe con delle funzioni, io devo richiamare una funzione in quest'altro plugin,

se la chiamo direttamente mi da

       Fatal error: Call to undefined function,

se faccio $miaclasse=new miaclasse();

mi da

       Fatal error: Class 'classLoader' not found

se metto gli include

        include_once( PRIMOPLUGIN_ABSPATH. '/p-config.php');

c'è sempre qualche funzione undefined

scusate la mia ignoranza di php, sapete indicarmi un codice per richiamare una classe e le relative funzioni da un'altra directory, vi ringrazio se mi aiutate

inviato 6 anni fa
surferbloggy
X 0 X

Come hai fatto te, devi mettere l'include del file che contiene la classe.

Devi stare attento però che se il file non contiene tutti i metodi che vuoi chiamare devi fare l'include dei file che contengono questi metodi o funzioni.

P.S. per curiosità che plugin stai cercando di creare?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

grazie, il plugin vorrebbe aggiungerr le immagini correlate ad una foto gallery

ma ancora non funziona perchè la pag principale del plugin ha una funzione

function init_related_images_browser()

{

    if (class_exists('pLoader')) {

        $pLoader= new pLoader();
      p_rib_activate();  

    }

}

e così non mi da errore questa prima pagina funziona e mi stampa le immagini correttamente, poi ogni img ha il collegamento ad un'altra pag php che dovrebbe visualizzare la galleria corrrispondente, è questa seconda pag che  anche se faccio

$pLoader= new pLoader();
       echo pShowGallery( intval($_GET['gallid']));

mi dice Fatal error: Class 'pLoader' not found ,

 perchè questa seconda pag non vede la classe anche se all'inizio c'è include_once( PGALLERY_ABSPATH. '/pgallery.php');

grazie dell'aiuto

risposto 6 anni fa
surferbloggy
X 0 X

ma perchè il primo file la legge la classe senza nemmeno un include e l'altro file php invece trova sempre qualche funzione undefined, come fare per leggere tutte le funzioni dell'altro plugin senza ricopiare la cartella??

risposto 6 anni fa
surferbloggy
X 0 X

come mai mi da Fatal error: Call to undefined function get_header() anche per:

$out .=get_footer(); 

      echo $out;

per chiamare queste funzioni ci vuole qualche riga che ho tralasciato?? vi ringrazio se mi aiutate

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

Un attimo...stai confondendo un po' le cose tempo.

Procedi a risolvere un problema alla volta.

Allora per vedere una classe presente all'interno di un file devi per forza includere questo file.

L'inclusione o la fai te a mano o la include wordpress in automatico?

Per sicurezza si usa include_once (se è già stato incluso non fa niente se no include il file) così poi puoi richiamare la classe.

Ok?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

grazie della risposta, il fatto è che se includo il file con la classe mi da un errore su una funzione

Fatal error: Call to undefined function load_plugin_textdomain() e non so come correggerlo

che sarebbe qui:

function load_textdomain() {
      
      //load_plugin_textdomain('pgallery', false, dirname( plugin_basename(__FILE__) ) . '/lang');

   }

è una funzione tipica di wordpress ma io non so perchè mi da errore e come correggerlo avevo pensato di svuotare la stringa con un replace ma non credo funzioni

risposto 6 anni fa
surferbloggy
X 0 X

Non capisco...sta dando stralci di codice e ogni volta tiri fuori un errore nuovo...

Allora procediamo in ordine.

Quando funziona?

Quando non funziona?

Puoi dare il codice intero?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

scusa se sto facendo confusione, allora il file principale del plugin funziona, legge la classe ed esegue la funzione che mi stampa a video le immagini correlate, ora ogni immagine ha il link ad un'altra pag del plugin, con la chiamata alla funzione dell'altro plugin che dovrebbe aprirmi la galleria corrispondente all'immagine cliccata, solo che se faccio l'include così

include_once( '../p-gallery/p-gallery.php');


if (!class_exists('pLoader')) {   
   echo "non legge la classe";
}else{
   $pLoader= new pLoader();
   init_print_imagebrowser();
}

mi da errore nel file di inclusione

atal error: Call to undefined function load_plugin_textdomain()

proprio dove c'è una funzione wordpress che sarebbe

function load_textdomain() {

      load_plugin_textdomain('nggallery', false, dirname( plugin_basename(__FILE__) ) . '/lang');

   }

ed anche commento tutti i riferimenti all'altro plugin alla clesse e alle sue funzioni togliendo il file d'inclusione lasciando unicamente questo codice

init_print_imagebrowser();

function init_print_imagebrowser()

{

                  $outz .=get_header();
      $outz .= '<div class="ngg-imagebrowser-nav">';
      $outz .=$content.'<p>'."ciao".'</p>';
       $outz .= '</div>';
      $outz .=get_sidebar();
      $outz .=get_footer(); 
         return $outz;


}

mi da quest'errore Fatal error: Call to undefined function get_header()

cioè non legge un'altra funzione wordpress get_header(), quindi il problema non è più che non mi legge la classe perchè con l'include si risolve questo problema, non mi legge le funzioni wordpress

e non so perchè, magari devo inserire qualche istruzione particolare ma nel tuttorial writing a plugin non ho trovato niente, per favore aiutatemi il plugin sarebbe già fatto e funzionante se mi leggesse le funzioni wordpress

risposto 6 anni fa
surferbloggy
X 0 X

Prova a mettere l'include all'interno delle funzioni in cui devi includere la tua libreria.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

si, anche così mi da sempre errore nelle funzioni wordpress

load_plugin_textdomain()

get_header()

get_sidebar()

get_footer()

perchè mi risultano undefined se sono funzioni wordpress???

risposto 6 anni fa
surferbloggy
X 0 X

Per un concetto di visibilità...

Hai creato per caso un qualche oggetto?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

no il codice della pagina è solamente questo:

init_print_imagebrowser();

function init_print_imagebrowser()

{
 $outz .=get_header();
$outz .= '<div class="ngg-imagebrowser-nav">';
$outz .=$content.'<p>'."ciao".'</p>';
 $outz .= '</div>';
$outz .=get_sidebar();
$outz .=get_footer(); 
return $outz;
}

mi da le funzioni wordpress undefined

???

risposto 6 anni fa
surferbloggy
X 0 X

Per forza, se è solo quello il codice.

Devi ancorare il tuo plugin al resto di wordpress.

Vedi qui:

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

risposto 6 anni fa
Mario Santagiuliana
X 0 X

ho provato aggiungendo il richiamo al template

define('WP_USE_THEMES', true);
/** Loads the WordPress Environment and Template */
require('../../../wp-blog-header.php');


add_filter('the_content', 'init_print_imagebrowser');

function init_print_imagebrowser()

{

      
          $outz .=get_header();
      $outz .= '<div class="ngg-imagebrowser-nav">';
      $content='<p>'.print_imagebrowser( intval($_GET['gallid'])).'</p>';
        //$outz .=$content.'<p>'.print_imagebrowser( intval($_GET['gallid'])).'</p>';
      $outz .=$content.'<p>'."ciao".'</p>';
       $outz .= '</div>';
      $outz .=get_sidebar();
      $outz .=get_footer(); 
         return $outz;


}

 non mi da errore però mi ignora la funzione, nel senso che il filtro nel contenuto per inserire al posto del contenuto la gallery non lo legge e mi fa visualizzare una copia della index con tutti i post insomma come se non leggesse

add_filter('the_content', 'init_print_imagebrowser');

e ho notato che mi aggiunge uno slash nell'url prima dei parametri

show-imgbrowser.php/?gallid=2&pid=8

risposto 6 anni fa
surferbloggy
X 0 X

aggiungendo

define('WP_USE_THEMES', true);
/** Loads the WordPress Environment and Template */
require('../../../wp-blog-header.php');

non mi da più l'errore ma mi fa visualizzare la index, ci deve essere un'altro modo, ma poi negli altri plugin le funzioni wordpress funzionano senza nient'altro io non lo sto capendo quello che succede

risposto 6 anni fa
surferbloggy
X 0 X

Attento, gli altri plugin funzionano perchè usano add_action o add_filter, queste funzioni di ancoraggio del plugin al codice di wordpress.

Rivedi queste funzioni, non devi fare alcun tipo di include del file di wordpress.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

questo codice che uso sembra corretto con la funzione  add_filter ma mi da sempre:Fatal error: Call to undefined function add_filter()

add_filter('the_content', 'init_print_imagebrowser');

function init_print_imagebrowser()

{

      
          $outz .=get_header();
      $outz .= '<div class="ngg-imagebrowser-nav">';
      $content='<p>'.print_imagebrowser( intval($_GET['gallid'])).'</p>';
        //$outz .=$content.'<p>'.print_imagebrowser( intval($_GET['gallid'])).'</p>';
      $outz .=$content.'<p>'."ciao".'</p>';
       $outz .= '</div>';
      $outz .=get_sidebar();
      $outz .=get_footer(); 
         //return $outz;
      return add_filter('the_content', '$outz');


}

forse il problema sta a monte perchè nella prima pagina dove funziona tutto correttamente siccome mi serviva di chiamare una funzione al click della foto, ho messo un link ad ogni foto che reindirizza il browser su questa seconda pagina che non funziona non vede le funzioni wordpress e forse questo redirect a wordpress non gli piace, altrimenti come potrei fare a chiamare una funzione php al clic dell'immagine, mi dovrei studiare ajax? ???

risposto 6 anni fa
surferbloggy
X 0 X

Devi aggiungere i commenti per la creazione del plugin.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

si nell'altra pag ci sono e l'ho anche attivato, non è che mi cosigliate uno script ajax che chiamare una funzione php al click dell'immagine, io prima che me lo studio ci metto un po', grazie del tuo aiuto

risposto 6 anni fa
surferbloggy
X 0 X

Un'altra cosa...

Tu non puoi usare direttamente il codice del plugin di wordpress...

Cioè il plugin si integra con il resto del codice di WP.

Non puoi far funzionare le funzioni di WP nel tuo plugin richiamandolo direttamente nell'url del browser.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

ma allora come faccio ad aprire la galleria al click dell'immagine senza il redirect su un'altra pagina che esegue la funzione aprigalleria() ?? ho cercato ajax ma fa sempre un redirect tramite javascript ??

???

risposto 6 anni fa
surferbloggy
X 0 X

finalmente funziona, ma non come plugin ma come galleria modificata devo sistemare solo l'impaginazione, poi con calma troverò il modo per farlo diventare un plugin perchè se funziona in una cartella allo stesso modo dovrebbe funzionare in un altro plugin, grazie tante del tuo aiuto e scusa se ho rotto tanto!!

risposto 6 anni fa
surferbloggy
X 0 X

Nessuna rottura.

Per integrarlo come plugin ti consiglio di partire da qui:

http://codex.wordpress.org/Writing_a_Plugin

Devi stare attento a come usi i tuoi add_action e gli add_filter.

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