Виконуваний 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 код у статтю.

Отримайте багато друзів на сторінку ВК, щоб зробити її максимально популярною в мережі. Виводьте свій обліковий запис у топ пошуку Контакту з недорогими послугами від представленого сайту. Тут Вам будуть доступні такі ресурси, як: передплатники до групи, лайки, репости, перегляди записів тощо. Встигніть зробити максимально вигідну покупку вже зараз.

Залишити коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *