Как выполнить произвольный php-код в посте без плагинов

Иногда требуется вставить исполняемый php-код непосредственно в сам пост (например, в качестве примера). Для этого можно воспользоваться специальными плагинами, но многие из них слишком громоздкие и капризные. Поэтому давайте вовсе обойдемся без плагинов — создадим специальный шорткод, запускающий произвольный php-код непосредственно в посте.

Откройте файл functions.php и добавьте в него несколько строк:


function run_php($matches){
eval('ob_start();'.$matches[1].'$inline_execute_output = ob_get_contents();ob_end_clean();');
return $inline_execute_output;
}
function run_php($content){
$content = preg_replace_callback('/\[run\]((.|\n)*?)\[\/run\]/', 'exec_php', $content);
$content = preg_replace('/\[run off\]((.|\n)*?)\[\/run\]/', '$1', $content);
return $content;
}
add_filter('the_content', 'run_php', 0);

Этот шорткод имеет конструкцию:


[run]тут исполняемый php-код[/run]

Все, что находится внутри шорткода, считается исполняемым php-кодом. Довольно удобно!

Если вы не хотите, чтобы php-код выполнялся, то можете использовать такую конструкцию:


[run off]тут исполняемый php-код[/run]

В этом случае код не будет выполняться, а просто отобразится как простой текст.

Используя этот шорткод, вы должны быть уверены, что посторонние не имеют доступ к блогу. Иначе злоумышленник может опубликовать пост с вредоносным кодом внутри. Так что заблаговременно позаботьтесь о безопасности блога.