Как я могу вставить 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, а затем вернуть.