Как я могу вставить php-код в шорткод в HTML?

Я хотел бы добавить php-код в шорткод в HTML-редакторе. Мой шорткод выглядит так:

<?php echo do_shortcode('[eapi keyword="KEYWORD" n=25]'); ?>

Это работает, если я поставлю только слово вместо ключевого слова. Теперь я хотел бы добавить отдельный заголовок с этим PHP-кодом:

<?php the_title(); ?>

Поэтому я вставил его в шорткод так:

<?php echo do_shortcode('[eapi keyword="<?php the_title(); ?>
" n=25]'); ?>

Но, к сожалению, это не сработало. Как я могу успешно вставить этот php-код в шорткод?

3 ответа

Решение

Вот возможное решение, но я не знаком с плагином / контекстом, в котором вы его используете. Но, возможно, это даст вам некоторые идеи:

<?php echo do_shortcode("[eapi keyword=\"" . the_title() . "\" n=25]"); ?>

Поэтому я удалил внутренние теги php для одного. Я переключил внешние кавычки на двойные, так как вы не можете использовать функции / переменные в одинарных кавычках. В то же время я объединил функцию title, так как не думаю, что ее можно интерпретировать в кавычках. Это также может свести на нет необходимость двойных кавычек, но силу привычки.

РЕДАКТИРОВАТЬ - Некоторые другие используют примеры за пределами исходного вопроса для ясности.

Переменная в строке требует двойных кавычек:

<?php echo do_shortcode("[eapi keyword='{$variable}' n=25]"); ?>

Объединенная переменная может использовать одинарные или двойные кавычки:

<?php echo do_shortcode("[eapi keyword='" . {$variable} . "' n=25]"); ?>

Ключевые слова и функции должны быть объединены:

<?php echo do_shortcode("[".KEYWORD." keyword='".func()."' n=25 x={$var}]"); ?>

Используйте что-то вроде

 <?php do_shortcode('[eapi keyword="' . get_the_title() . '"]'; ?>

Вам понадобится get_the_title, потому что он будет возвращать заголовок, а не выводить его напрямую (как это будет с the_title). Поскольку вы уже находитесь в режиме PHP, вам не нужно никаких дополнительных

Я думаю, что вам нужно изменить свой плагин EAPI для поддержки ваших требований.

Например, вы можете создать правило для вашего eapi-плагина для анализа ключевого слова параметра.

1) если это простая строка, вернуть напрямую

2) если это строка, похожая на "{{{......}}}", используйте функцию eval, чтобы запустить ее как скрипт php, а затем вернуть.

Другие вопросы по тегам