Вопрос или проблема
Я пытаюсь разобраться, как отобразить вывод шорткода в текстовом поле с помощью API настроек WordPress. Моя цель – создать несколько шорткодов, чтобы использовать один или другой вместе с каким-то другим текстом. В примере я пытаюсь отобразить название продукта, а затем какой-то текст в текстовом поле, например, извините, [oosd-title] распродан, чтобы отобразить извините, красные шорты распроданы.
Шорткод было вполне легко сделать
function oosdfw_title_display() {
return get_the_title();
}
add_shortcode( 'oosd-title', 'oosdfw_title_display' );
И это генерирует текстовое поле в админской панели. Все работает, кроме того, что шорткод отображает [oosd-title] вместо названия продукта
function oosdw_text_field_6_render( ) {
$options = get_option( 'oosdw_settings' );
?>
<input type="text" name="oosdw_settings[oosdw_text_field_6]" value="<?
php echo $options["oosdw_text_field_6"]; ?>">
<?php
}
Я не совсем уверен, что мне нужно сделать, чтобы шорткод срабатывал на фронтенде. Я пробовал использовать esc_html, но не совсем понимал, как его использовать и куда вставить
Используйте шорткод с параметрами
function oosdfw_title_display($atts) {
$a = shortcode_atts( array(
'before' => 'Извините, ',
'after' => ' распродан.',
), $atts );
return $a['before'].get_the_title().$a['after'];
}
add_shortcode( 'oosd-title', 'oosdfw_title_display' );
Поместите шорткод в текстовое поле и измените параметры before
и after
в зависимости от ваших требований.
[oosd-title before="Извините " after = " распродан."]
Нет необходимости отображать вывод шорткода в текстовом поле
Фронтенд
$options = get_option( 'oosdw_settings' );
echo do_shortcode( $options["oosdw_text_field_6"]);
Надеюсь, это поможет
Ответ или решение
Конечно! Давайте рассмотрим, как вы можете отобразить вывод шорткода в текстовом поле, используя API настроек WordPress.
Шаг 1: Определение шорткода
Вы правильно записали функцию для создания шорткода, который возвращает название продукта. Я предлагаю немного изменить вашу функцию, чтобы она принимала параметры, включая текст до и после названия продукта. Это сделает ваш шорткод более гибким.
function oosdfw_title_display($atts) {
$a = shortcode_atts(array(
'before' => 'Извините, ',
'after' => ' распродано.',
), $atts);
return $a['before'] . get_the_title() . $a['after'];
}
add_shortcode('oosd-title', 'oosdfw_title_display');
Шаг 2: Настройка текстового поля
Вам нужно отобразить текстовое поле в административной панели, где пользователи смогут ввести свои данные. Вы уже правильно инициализировали текстовое поле, но сейчас мы скорректируем отображение параметров текста.
function oosdw_text_field_6_render() {
$options = get_option('oosdw_settings'); ?>
<input type="text" name="oosdw_settings[oosdw_text_field_6]" value="<?php echo esc_attr($options["oosdw_text_field_6"]); ?>">
<?php
}
Обратите внимание, что я использовал esc_attr()
для безопасного отображения значения текстового поля.
Шаг 3: Отображение на фронтенде
На фронтенде, вместо того чтобы показывать сам шорткод, вы можете использовать do_shortcode()
для обработки и отображения результата выполнения этого шорткода.
$options = get_option('oosdw_settings');
echo do_shortcode($options["oosdw_text_field_6"]);
Пример использования
Теперь вы можете использовать ваш шорткод в текстовом поле в формате:
[oosd-title before="Извините, " after=" распродано."]
Резюме
Таким образом, пользователи смогут вводить свой шорткод в текстовое поле. В результате, если у вас, например, есть продукт с названием "красные шорты", то выведется текст: "Извините, красные шорты распроданы."
Если у вас возникли дополнительные вопросы или требуется дальнейшая помощь, не стесняйтесь обращаться!