Отображение шорткода в текстовом поле с помощью API настроек WordPress

Вопрос или проблема

Я пытаюсь разобраться, как отобразить вывод шорткода в текстовом поле с помощью 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=" распродано."]

Резюме

Таким образом, пользователи смогут вводить свой шорткод в текстовое поле. В результате, если у вас, например, есть продукт с названием "красные шорты", то выведется текст: "Извините, красные шорты распроданы."

Если у вас возникли дополнительные вопросы или требуется дальнейшая помощь, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...