Come accedere direttamente a un file PHP situato nella cartella dei temi?

16 lug 2012, 19:27:22
Visualizzazioni: 23K
Voti: 7

Ho un file nella cartella del mio tema chiamato "test.php".

Se vado su www.mysite.com/wp-content/themes/my-theme/folder/test.php il tema si carica, cosa che presumo sia un errore 404 gestito da WP. Se cambio il nome del file in test.html posso accedervi senza problemi.

Ho provato ad aggiungere il seguente codice al mio file functions.php (per aggiungere una regola di riscrittura):

add_rewrite_rule( 'test.php$', $relative_directory . '/folder/test.php [L]', 'top' );

ma anche avendo la regola htaccess non sembrava fare nulla.

Qualcuno ha idea di cosa potrebbe causare questo?

php
6
Commenti

Non dovresti caricare direttamente file php in primo luogo. Cosa deve fare esattamente il file? Probabilmente c'è un modo migliore per gestirlo.

EAMann EAMann
16 lug 2012 20:39:00

Ho un file PHP che uso per recuperare alcuni dati dal mio database da servire via ajax, ma al momento accedere a quel file non fa altro che restituire un errore 404 di WordPress.

Gazillion Gazillion
16 lug 2012 20:52:40

WordPress può recuperare i dati per te e ha un supporto AJAX integrato. Usare WP per l'accesso ai dati ti dà il vantaggio aggiuntivo della cache, sanitizzazione, escaping e tutto ciò che puoi fare con $wpdb.

EAMann EAMann
16 lug 2012 22:09:17

Come si possono contenere le chiamate ajax all'interno della cartella del tema? Non capisco perché debbano essere estrapolate quando tutto il resto può essere definito internamente.

Gazillion Gazillion
17 lug 2012 18:48:05

Registri le tue chiamate ajax in functions.php usando un filtro. Poi effettui la chiamata a admin-ajax.php e WordPress la gestirà. C'è un esempio basato su plugin nel Codex ma funziona esattamente allo stesso modo per i temi.

EAMann EAMann
17 lug 2012 19:29:25

Scusa, avevo interpretato male la voce del codex. Il file admin-ajax viene chiamato quando c'è una richiesta ajax.

Gazillion Gazillion
17 lug 2012 20:43:18
Mostra i restanti 1 commenti
Tutte le risposte alla domanda 3
0

Supponendo che tu utilizzi l'URL corretto per accedere al file, tutto viene gestito a livello del tuo server web e WP non viene eseguito affatto, quindi soluzioni basate su WP come la modifica delle regole di riscrittura non ti saranno d'aiuto.

È molto probabile che ci sia qualche configurazione del server web che invia il 404 per qualsiasi accesso a un file php in quella cartella (immagino che dovresti provare se anche altri file php lì restituiscono 404). Potresti essere in grado di modificare la configurazione del server web per soddisfare le tue esigenze, ma come ha commentato @EAMann, non è il modo giusto per scrivere ajax per WP.

30 nov 2012 08:15:04
1

Stai usando le regole RewriteRule nel tuo file .htaccess? Dovresti essere in grado di accedere direttamente ai file PHP allora. Le prime due righe con un RewriteCond assicurano che la riscrittura verso l'index.php di WordPress non avvenga se il file o la directory esiste.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /tuo-sito-wp/index.php [L]
16 lug 2012 20:38:52
Commenti

Ho scritto quella riga in fondo al file .htaccess e ha rotto il resto del sito. Non posso dire di capire davvero perché, sono un po' perplesso :-/

Gazillion Gazillion
16 lug 2012 20:51:51
0

Devi creare un template personalizzato per WP per quel file in modo che possa essere visualizzato correttamente. Altrimenti è un file autonomo che cerca di essere eseguito senza autorizzazione o hook. In questo caso, dovresti aggiungere direttamente il codice PHP del file tramite WP e creare una Pagina.

Puoi anche aprire il file "page.php" nella directory del tuo tema selezionato, salvarlo come "test.php" nella stessa directory e incollare l'intero contenuto del tuo codice PHP "test.php" all'interno della divisione del nuovo file "test.php".

Qualcosa del genere:

<main id="main" class="site-main" role="main">
<?php
// Il tuo codice PHP qui!
?>
</main>

Questo mostra solo la divisione di base di cui avrai bisogno. Se desideri che venga visualizzato anche il resto del contenuto del sito insieme a test.php, dovrai creare un file content-test.php nella directory "template-parts" del tuo tema.

Stessa cosa, ma questa volta aprirai "content-page.php" e lo salverai come "content-test.php" nella directory "template-parts", incollando il codice di test.php all'interno del punto in cui vuoi che appaia.

Torna al nuovo file "test.php" e sostituisci la seguente riga:

get_template_part( 'template-parts/content', 'page' );

con:

get_template_part( 'template-parts/content', 'test' );

Lo svantaggio di questo metodo è che, quando WP si aggiorna, potrebbe o meno lasciare intatto quel file rispetto alla prima opzione che chiama il file PHP come post o pagina.

Spero che questo ti sia utile!

27 feb 2019 00:10:54