Vi è mai capitato di voler inserire del php all’interno delle pagine del vostro blog WordPress?
Per farlo potreste accontentarvi di plugin minori come, ad esempio: insert-php o php-code-for-posts, ma – pur avendoli personalmente testati, usati e in parte apprezzati – alla fine, inevitabilmente, c’era qualcosa che non andava e i problemi si notavano soprattutto con blocchi di codice più estesi e complessi.
Così, sia per eliminare la dipendenza da plugin terzi (non sempre compatibili con le nuove versioni di WordPress, non sempre aggiornati ecc…), che per risolvere problemi di filtri e altro (e da qui i vari problemi con blocchi estesi e complessi di codice), pensai semplicemente di realizzare una directory dove archiviare gli script e quindi includerli ( <?php include('filename.php'); ?>
) all’interno delle pagine.
A questo punto, però, mi serviva un plugin per l’include(), ma anche qui – ahimè – scarsi risultati …
Alla fine, come sempre, meglio far da se …
ed ecco che realizzai un semplice (ma sicuro ed efficiente) mu-plugins che uso attualmente qui su questo blog.
/mu-plugins/_php.php
<?php defined("ABSPATH") or exit; /* Plugin Name: Php Script Include Description: Include PHP script in page with shortcode > [php_include file='filename'] Author: Salvatore Noschese - <a href='https://www.laltroweb.it'>laltroweb.it</a> */ // Enable also in text widget sidebar? $enable_in_widget_sidebar = "Yes"; //Yes or No? // include PHP file function ___php_include($atts) { $filename = $atts['file']; $directory = "_php_script"; // only name - no slash; $includefile = WP_CONTENT_DIR . "/" . $directory . "/" . $filename . ".php"; ob_start(); if (isset($filename) && !empty($filename) && file_exists($includefile)) { include($includefile); } else { echo "[php_include file='" . htmlentities($filename, ENT_QUOTES) . "']"; // output: [php_include file='filename'] } return ob_get_clean(); } if ($enable_in_widget_sidebar === "Yes") { add_filter('widget_text', 'do_shortcode'); } // register shortcode [php_include file='filename'] add_shortcode('php_include', '___php_include');
quindi carico/gestisco i file tramite ftp o cpanel all’interno della directory interessata (e isolata): /wp-content/_la_mia_directory_php_/mioscript.php
infine includo il file (pagina, articolo, sidebar [se abilitata nel plugin]…) semplicemente inserendo lo shortcode: [php_include file='mioscript']
PS: come ulteriore protezione, potete inserire queste poche righe in un htaccess all’interno della directory che conterrà i vostri script:
<Files *.php> Order allow,deny Deny from all </Files>
Questo eviterà, in ogni caso, l’esecuzione del file via browser.
Tutto qua 🙂
È così che ho creato i vari tools nella sezione Strumenti, la Sitemap, l’Area Download e alcuni degli elementi customizzati nella mia sidebar 😉
Ciao Salvatore.
Non sono esperto di WordPress, ho quasi sempre avuto a che fare solo con Joomla (magari potresti gentilmente realizzare qualcosa di simile per quest’altro CMS :-)).
Comunque se dovessi provare di nuovo WordPress mi piacerebbe utilizzare il tuo plug-in, ma non ho capito bene cosa fare. Devo copiare il codice di cui sopra e creare un file
_php.php da inserire nella cartella /mu-plugins/
Grazie, John
Non uso/conosco joomla, mi dispiace.
Per il resto, corretto ?
Questo è un normalissimo plugin, ma anziché attivarlo nel modo classico preferisco attivarlo sfruttando la funzionalità degli mu-plugins.
Quindi crei un file, lo copi dentro mu-plugins e ci metti il codice di questo script. Così avrai attivato il plugin che adesso potrai usare nel modo indicato. É più facile farlo che spiegarlo. ?
Ok
Un’altra cosa, ma questo mu-plugins cosa è esattamente?
È già installato in wordpress? Esiste già la cartella?
Grazie
Credo che questo possa rispondere ad ogni tua domanda: https://codex.wordpress.org/Must_Use_Plugins
Saluti ☺️