Вопрос или проблема
У меня есть очень простая функция для создания шорткода, чтобы получить название моей страницы. Я использовал этот шорткод в форме, но WordPress изменил API шорткодов, и это больше не работает. Поэтому я задумался, может ли я использовать вторую функцию, чтобы сделать шорткод, который вставит HTML и результат первого шорткода?
Вот что у меня есть на данный момент…
function my_title( ){
return get_the_title();
}
add_shortcode( 'page_title', 'my_title' );
А затем на странице у меня есть этот HTML…
<input type=hidden name=itemname value="[page_title] small print">
Могу ли я создать новую функцию, которая будет содержать поле ввода плюс название страницы в виде шорткода, чтобы я мог заменить все поле ввода на шорткод? Извините, если это звучит странно, я полный новичок в этом!
Может быть, вы ищете do_shortcode()
, который просто выполняет шорткод?
Ссылка: https://developer.wordpress.org/reference/functions/do_shortcode/
Тем не менее, выполнение шорткода внутри шорткода звучит странно. Вам лучше сделать ваш старый (первый) шорткод PHP-функцией, а затем просто вызывать её из каждого шорткода.
Вы можете решить это другим способом.
<?php
function my_title( ){
$title = get_the_title();
return 'page_title="' . $title . '"';
}
add_shortcode( 'page_title', 'my_title' );
function input_shortcode($atts = null ) {
extract( shortcode_atts( array('page_title' => 'page_title'), $atts ) );
return "<input type=hidden name=itemname value="" . $page_title . " small print">"
}
add_shortcode('myInput', 'input_shortcode');
//Используйте это так:
$page_title =
[myInput [page_title]]
?>
Примечание: Эти ограничения могут измениться в будущих версиях WordPress,
вы должны протестировать, чтобы быть абсолютно уверенными.
Ссылка: http://speckyboy.com/2011/07/18/getting-started-with-wordpress-shortcodes-examples/
Ответ или решение
Да, вы можете создать функцию, которая возвращает HTML-код вместе с результатом другой функции в WordPress, используя шорткоды. Это может быть полезно, когда вы хотите объединить динамический контент и статический HTML в одном элементе интерфейса.
Понимание шорткодов в WordPress
Шорткоды — это короткие коды, которые WordPress заменяет соответствующим HTML или PHP-кодом. Это позволяет значительным образом упростить создание сложных элементов интерфейса без необходимости ручного написания HTML-кода каждый раз.
Проблема
В вашем примере вы хотите получить название страницы в виде шорткода и вставить его в скрытое поле формы. Однако измененная API шорткодов WordPress создает определенные ограничения. Вам нужно обернуть весь код в один шорткод для более удобного использования.
Решение
Вы можете создать новый шорткод, который будет возвращать как HTML-код скрытого поля формы, так и результат вашего текущего шорткода. Вот как это можно сделать:
function my_title() {
return get_the_title();
}
add_shortcode('page_title', 'my_title');
function input_shortcode() {
// Получаем название страницы, используя функцию my_title
$title = my_title();
// Создаем HTML-код скрытого поля с включенным названием страницы
return '<input type="hidden" name="itemname" value="' . esc_attr($title) . ' small print">';
}
add_shortcode('myInput', 'input_shortcode');
Использование шорткодов
Теперь вы можете использовать ваш новый шорткод [myInput]
в любом месте контента, и он будет генерировать скрытое поле с названием страницы:
[myInput]
Объяснение кода
-
Функция my_title(): Эта функция возвращает название текущей страницы. Мы используем встроенную функцию
get_the_title()
, что позволяет получить актуальное название страницы. -
Функция input_shortcode(): В этой функции мы сначала вызываем
my_title()
для получения названия страницы и затем возвращаем HTML-код скрытого поля формы с соответствующим значением. -
Безопасность данных: Обратите внимание на использование
esc_attr()
, который обеспечивает корректное экранирование значения перед его выводом, что важно для предотвращения XSS-уязвимостей.
Заключение
Создание шорткодов для динамического контента в WordPress — это мощный способ улучшить управляемость и гибкость вашего контента. Подход, который вы применяете для комбинирования различных функций в одно целое, не только упрощает ваш код, но и делает его более читаемым и обслуживаемым. В будущем, если API шорткодов изменится, данная методология обеспечит большей устойчивости к изменениям.