php в коротком коде

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

function trainer_footer( ){ get_footer('rctrainer'); } add_shortcode( 'trainer', 'trainer_footer' ); 

Это работает.

Но есть два вопроса;

  1. содержание бокового трейлера отображается вверху содержимого, а не вместо короткого кода. Зачем?

  2. Я читал, что не стоит писать PHP в такой короткий код. Зачем?

  1. Во-первых, get_footer() предназначен для загрузки файлов шаблонов уровня страницы, а не get_footer() . get_template_part() этого вы должны использовать get_template_part() .
  2. Штрих-коды выполняются как фильтр на the_content . По нормам всех фильтров они должны return контент, а не echo его. echo контент приведет к таким эффектам, которые вы видите. Видимо, файл шаблона, который вы загружаете с помощью короткого кода, печатает символы на экране вместо того, чтобы return строку, как и должно быть.
  3. Я не знаю, где вы читали о коротких кодах и PHP, но это своего рода вздор, по крайней мере, как вы представили случай. Штрих-коды практически все делают больше, гораздо больше, чем echo статические строки. Посмотрите, например, на ярлык базовой галереи. Для этого вам нужен PHP.
  1. Вероятно, из-за не закрытых DIV или CSS. Вы должны проверить исходный код страницы.

  2. Существует хорошая практика (а также избежать проблем), чтобы вернуть содержимое короткого кода, а не выводить его напрямую (что и делает get_footer ()).

Кроме того, я действительно не думаю, что вы должны использовать короткий код для вызова нижнего колонтитула. Я вижу много лучших способов, чем это: использование мета-полей, шаблонов страниц, даже с использованием базового сопоставления идентификаторов.