Могу ли я использовать функцию для возврата HTML и результата другой функции?

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

У меня есть очень простая функция для создания шорткода, чтобы получить название моей страницы. Я использовал этот шорткод в форме, но 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]

Объяснение кода

  1. Функция my_title(): Эта функция возвращает название текущей страницы. Мы используем встроенную функцию get_the_title(), что позволяет получить актуальное название страницы.

  2. Функция input_shortcode(): В этой функции мы сначала вызываем my_title() для получения названия страницы и затем возвращаем HTML-код скрытого поля формы с соответствующим значением.

  3. Безопасность данных: Обратите внимание на использование esc_attr(), который обеспечивает корректное экранирование значения перед его выводом, что важно для предотвращения XSS-уязвимостей.

Заключение

Создание шорткодов для динамического контента в WordPress — это мощный способ улучшить управляемость и гибкость вашего контента. Подход, который вы применяете для комбинирования различных функций в одно целое, не только упрощает ваш код, но и делает его более читаемым и обслуживаемым. В будущем, если API шорткодов изменится, данная методология обеспечит большей устойчивости к изменениям.

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

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