Использование в дополнительных полях wordpress кода php

Рейтинг: 0Ответов: 1Опубликовано: 21.05.2023

Имеются дополнительные поля "Заголовок h1" (input) и поле Html-код (textarea).

Дополнительные поля в коде темы выводятся так:

<?php echo get_post_meta($post->ID, 'H1', true); ?>
<?php echo get_post_meta($post->ID, 'htmlkod', true); ?>

Допустим я ввел в поле "Html-код (textarea)" следующий код:

<p>Заголовок страницы на которой вы находитесь: Огнетушители</p>

Он спокойно отработает и выведет эту информацию.

Но если я ввожу такой код:

<p>Заголовок страницы на которой вы находитесь: <?php echo get_post_meta($post->ID, 'H1', true); ?></p>

То он не обрабатывается в коде. Получается такая картина:

введите сюда описание изображения

Вопрос, как можно осуществить подобное? Возможно ли вообще?

Ответы

▲ 1Принят

Возможно ли вообще? Наверное. Надо ли? Нет 100%.

Не лучший вариант

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

<p>Заголовок страницы на которой вы находитесь: %header%</p>

Тогда в шаблоне вывод уже можно будет сделать примерно так:

$header = str_replace('%header%', get_post_meta($post->ID, 'H1', true), get_post_meta($post->ID, 'htmlkod', true)); //То есть в строке с вашим HTML-кодом заменяем своего рода shortcode %header% на то, что вернёт функция get_post_meta($post->ID, 'H1', true)
echo $header; //Там, где вам нужно

Вариант получше

Но, как отметил @SeVlad (ему отдельное спасибо!), такой вариант не самый лучший (хотя, пожалуй, в рамках конкретно данного вопроса и неплох).

И если обратиться к поисковику с вопросом по типу "shortcode wordpress", то можно выяснить, что в Wordpress имеется возможность создавать свои shortcode с помощью функции add_shortcode. И уже применяя её к решению данного вопроса, можно сделать что-то типа такого (не знаю, что у автора означает $post->ID, но скорее всего идентификатор текущей записи в цикле. А значит код получения заголовка get_post_meta($post->ID, 'H1', true) используем напрямую):

add_shortcode('my_shortcode_header_current_page', 'my_shortcode_output_header_page_func');

function my_shortcode_output_header_page_func($atts, $content, $shortcode_tag) {
    global $post;
    return get_post_meta($post->ID, 'H1', true);
}

В этом случае уже вся дальнейшая работа лежит на самом Wordpress. То есть в любом месте контента, где встретиться [my_shortcode_header_current_page], будет выводиться заголовок, указанный в соответствующем поле. Данный код можно расположить в файле functions.php вашей темы.

P.S. Можно усовершенствовать shortcode, добавив ему атрибуты. Но всё это можно найти в документации к вышеуказаннолй функции.