php

Php: Come eseguirlo via mu-plugins su WordPress

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 "&#x5B;php&#x5F;include&#x20;file&#x3D;&#x27;" . htmlentities($filename, ENT_QUOTES) . "&#x27;&#x5D;"; // 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 😉

2 Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *