View Full Version : [Wordpress + PHP] Esecuzione pagina PHP in un'altra pagina
Allora... premesso che mi sta partendo l'embolo per due motivi:
1) non so di preciso come spiegare questo problema
2) ne consegue che non posso cercare quello che mi serve.
Vediamo se ci riesco almeno qui.
Ho un sito (in locale chiaramete) wordpress. Ho creato un pagina PHP per visualizzare la query presa da una combobox. La pagina funziona tranquillamente. Per fare questo però ho dovuto installare un plugin chiamato PHPExec che tramite <phpcode> mi permette di eseguire il codice PHP nella pagina. Ora leggendo in rete molti sconsigliano di utilizzare direttamente il codice PHP nella pagina (alcuni dicono perché poco sicuro per via dell'SQL Injection).
Ora il fatto è: come cacchio devo fare?
In aspetto-editor sotto template devo creare lì la pagina php? e poi come la richiamo in un'altra pagina?
Mi sta scoppiando la testa.
Spero si sia capito qualcosa di quello che ho scritto perché credo proprio di avere i pensieri abbastanza confusi http://forum.html.it/forum/images/smilies/look.gif
Vediamo se riesco ad aiutarti, anche se come hai detto è un filo difficile da decifrate :D
Te hai una pagina creata in wordpress e vorresti avere la possibilità di visualizzare in essa il risultato di un codice php invece che un testo puro e semplice inserito tramite il backend di wordpress.
Se il punto è questo niente di più semplice. Mettiamo che la tua pagina si chiami "Test", vai nell'editor (meglio ancora sarebbe lavorare con qualche IDE...chessò Aptana o Eclipse-PHP) e crea un file page-test.php. All'inzio dello script aggiungi:
<?php
/** Template Name: Test */
A questo punto vai nel backend wp della pagina e sulla destra trovi "Modello", qui associa a questo il Template "Test".
A questo punto tutto quello che scrivi nel file php verrà visualizzato quando accederai alla pagina Test. Ovviamente devi ricostruirti la struttura standard di una pagina del tuo sito, ad esempio dovrai recuperare header e footer tramite le relative funzione (get_header() e get_footer()). Ad esempio potresti fare una cosa tipo:
get_header();
tua query
get_footer();
C'è anche una via più veloce per associare un file php ad un contenuto wordpress (pagina o categoria), ossia creare file del tipo page-ID.php o category-ID.php. Dove ID è ovviamente quello della relativa pagina. La fregatura sta nel fatto che gli ID vanno in base ai contenuti wordpress. Di conseguenza, se hai 2 ambienti con contenuti diversi, devi aggiornare il nome del file quando salti da un'ambiente all'altro.
chiaramente il modello che creo lo devo uploadare manualmente nella cartella di wordpress, giusto?
Quindi il problema era il fatto che non sapessi che bisognava ricostruire la struttura della pagina. Dopo o domani provo, credo sia questo il problema però :)
Ti ringrazio tantissimo :)
EDIT: ma la creazione di queste pagine ha un nome specifico? così posso informarmi meglio :)
EDIT 2:
mi sa che non è mi proprio chiaro, perché se provo a fare una cosa del genere
<?php
get_header();
require 'connect.inn.php';
$res = $_POST['COMBO'];
echo "Il titolo e': ".$res;
$sqlquery = "SELECT titolo, autore, anno, numero, tipologia, trama, copertina FROM wp_urania WHERE autore LIKE '%$res%'";
$result = mysql_query($sqlquery);
$number = mysql_numrows($result);
$i = 0;
if ($number < 1){
print "<center><p>La ricerca non ha prodotto nessun risultato</p></center>";
} else {
while ($number > $i){
$numero = mysql_result($result, $i, "numero");
$titolo = mysql_result($result, $i, "titolo");
$autore = mysql_result($result, $i, "autore");
$anno = mysql_result($result, $i, "anno");
$tipologia = mysql_result($result, $i, "tipologia");
$trama = mysql_result($result, $i, "trama");
$copertina = mysql_result($result, $i, "copertina");
print "<p><center>Titolo: ".$titolo;
print "<p><center>Anno: ".$anno;
print "<p><img src=$copertina height=250>";
print "<p><center>Trama: ".$trama;
$i++;
}
}
get_footer();
?>
Quando vado a creare una pagina, in attributi, genitori-> nella lista ci sono le pagine che ho già creato e non questa :( non ci sto proprio a capì niente
Allora provo a partire dall'inizio :D
Tutta la parte di "frontend" di wordpress è gestita dal Tema attivo. La cartella del del tema la trovi sotto wp-content/themes/temaAttivo ed è qui sotto che devi creare il tuo file. Ora l'errore che hai fatto, secondo me, è stato quello di creare il file aspettandoti di trovare la pagina del backend, non è cosi :)
Spiego, ogni contenuto che tu crei nel backend (post, categorie o pagine diciamo) viene visualizzato sul frontend da un relativo file generico, rispettivamente:
-page.php per le pagine;
-category.php per le categorie;
-single.php per i post;
Va da se che tutte le pagine/categorie che saranno create avranno una struttura uguale. Se si volesse modificare tale struttura per una specifica pagina è necessario creare il file page-ID.php, dove ID è l'identificativo della pagina stessa che hai creato. Quindi crei la pagina Test, vedi l'id (mettiamo 7) e crei page-7.php. A questo punto quando vai a caricare quella pagina l'engine chiamerà page-7.php invece di page.php visualizzando il contenuto del file che hai creato.
Per capire il tutto io consiglio di dare una letta alla pagina seguente: http://codex.wordpress.org/Template_Hierarchy , è molto utile sia per comprendere la struttura dei temi che i file che puoi usare per visualizzare in maniera diversa i vari contenuti.
Altro consiglio, tutte le funzioni o chiamate al db solitamente vengono scritte nel file function.php (che dovresti trovare nel tuo tema) e poi richiamate nei vari file.
innanzitutto grazie per la spiegazione.
chiaramente essendo rinco nel creare quel template mi sono dimenticato di aggiungere:
<?php
/*
Template Name: nome
*/
?>
finalmente in aggiungi pagina compare template e me lo fa visualizzare, utilizzare. Ora chiaramente devo capire come sistemare il tutto leggendo quello che mi hai indicato. Perché per esempio lanciando una query che mi doveva visualizzare un solo risultato m'ha fatto comparire a video tutti i risultati :D
innanzitutto grazie per la spiegazione.
chiaramente essendo rinco nel creare quel template mi sono dimenticato di aggiungere:
<?php
/*
Template Name: nome
*/
?>
finalmente in aggiungi pagina compare template e me lo fa visualizzare, utilizzare. Ora chiaramente devo capire come sistemare il tutto leggendo quello che mi hai indicato. Perché per esempio lanciando una query che mi doveva visualizzare un solo risultato m'ha fatto comparire a video tutti i risultati :D
:D
Guarda ci si deve solo prendere un attimo la mano.
Nello specifico cosa devi visualizzare?? Perche ad esempio se vuoi visualizzare una lista di post, o un post, wordpress mette a disposizione delle funzioni senza dover lavorare direttamente sulla query in SQL. In altri casi invece ti serve proprio la query SQL per recuperare dati più specifici.
ma io dovrei fare una cosa semplicissima.
Ho un campo ricerca dove prendo la stringa, questa stringa va a finire nel template che elabora la query e deve visualizzare i risultati nella pagina che dico io.
Ora ho provato a vedere un po' in giro, a modificare la pagina page.php etc etc. in effetti riesco ad ottenere quello che mi serve solo che lo vedo tutto a destra ossia dov'è il campo di ricerca anziché nella pagina basata su quel template.
Quindi la domanda è: nella pagina che creo, oltre a dargli il template devo modificare la pagina in html per far visualizzare i dettagli prendendo le variabili php? ma che cacchio sto a dì? spero si sia capito :stordita:
EDIT:
praticamente nel template ho aggiunto la parte HTML richiamando così le variabili php con il loro contenuto. FUNZIONA!
C'è solo un piccolo particolare, ossia che il risultato è presente sopra il titolo della pagina O___O
Esempio:
Autore:
aaa
Anno:
1980
Trama:
geagagagaag
Risultati della ricerca
Quando "Risultati della ricerca" dovrebbe essere sopra. Devo capire da dove prende il valore del titolo della pagina
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.