Виконуваний php код у записах WordPress
Бувають ситуації, коли дуже зручно використовувати весь потенціал мови програмування PHP у тексті під час написання статей. Йдеться про статті для WordPress.
В цілях безпеки не рекомендую використовувати цей метод. Використовуйте краще шорткоди .
Всі хто пробував написати якийсь php код у пості, сподіваючись, що він спрацює, знають, що WordPress сприймає такий код як простий текст. Однак іноді буває зручно запустити, наприклад, якийсь цикл виведення прямо в тексті при написанні статті, адже контент такої статті буде оновлюватись динамічно. Іншим прикладом може бути можливість викликати готові функції в пості, у разі потреби або, наприклад, вставити який-небудь php файл у текст посту за допомогою php функції require():
require 'my_script.php';
Загалом тут фантазія безмежна і правда в тому, що неможливість використання php в тексті статті в деяких випадках може стати справжньою проблемою. Якось давно я зіткнувся з такою проблемою, вирішив її взявши і трохи переробивши код із якогось плагіна (зараз вже не згадаю назву).
Отже, щоб реалізувати можливість вставляти виконувані PHP скрипти в текст статті/поста чи статичної сторінки , потрібно додати до вже, напевно, до болю знайомий нам файл теми functions.php наступний код:
## Виконуваний PHP код у контенті запису WordPress. ## [exec]PHP_код[/exec] ## ## @version: 1.0 if( 'Виконуваний PHP код у контенті' ){ add_filter( 'the_content', 'content_exec_php', 0); function content_exec_php( $content ){ return preg_replace_callback( '/[exec( off)?](.+?)[/exec]/s', '_content_exec_php', $content ); } function _content_exec_php( $matches ){ if( 'off' === $matches[1] ){ return "nn<".'pre>'. htmlspecialchars( $matches[2] ) .'</pre'.">nn"; } else { eval( "ob_start(); {$matches[2]}; $exec_php_out = ob_get_clean();" ); return $exec_php_out; } } }
Після того, як код доданий стане можливим використовувати у статтях конструкцію такого виду:
[exec]php код[/exec]
Наприклад:
[exec] // Коментар Global $wp_version; echo "Поточна версія WP: $wp_version"; [/exec]
Щоб вимкнути виконання коду, можна використати таку конструкцію. Вона виведе просто код, якби ми вставили php код як текст.
[exec off]php код[/exec]
Важливо про захист
Потрібно пам’ятати, що цією можливістю може скористатися будь-хто, а це величезна дірка в захисті, тому що якщо хтось має доступ до написання статей, він легко може зробити з сайтом все, що захоче.
Щоб убезпечити себе від можливих згубних наслідків цього хаку, можна зробити наступний простий захист (що відразу прийшло мені в голову): включати виконання конструкції [exec]php код[/exec]
, тільки в тому випадку, якщо, наприклад, у посту є якесь довільне поле або, скажімо, пост написаний за 00 хвилин. Природно тільки ви знатимете цю хитрість при якій код буде виконуватися і відповідно тільки вам буде доступна можливість вставити php код у статтю.
–
Отримайте багато друзів на сторінку ВК, щоб зробити її максимально популярною в мережі. Виводьте свій обліковий запис у топ пошуку Контакту з недорогими послугами від представленого сайту. Тут Вам будуть доступні такі ресурси, як: передплатники до групи, лайки, репости, перегляди записів тощо. Встигніть зробити максимально вигідну покупку вже зараз.