Есть 3 способа использования формы обратной связи: а) Вы можете использовать "блок обратной связи" (включается в настройках плагина). Форма обратной связи будет выведена при клике на соответствующую кнопку в этом блоке. б) Вы можете вывести готовую форму обратной связи прямо в контенте записи (шорткодом, выводимым только на турбо-страницах). Для этого используйте код: function turbocontactform_shortcode( $atts, $content ) { //получаем настройки плагина, чтобы узнать имя RSS-ленты $yturbo_options = get_option('yturbo_options'); $rssturboname = $yturbo_options['ytrssname']; //если это не наша RSS-лента, то шорткод будет удален if ( ! is_feed($rssturboname) ) return ''; //создаем форму обратной связи //data-send-to должен содержать email, принадлежащий вашему домену //при заполнении data-agreement-company обязательно нужно указать и data-agreement-link $content = ' <form data-type="callback" data-send-to="mail@example.com" data-agreement-company="ООО Ромашка" data-agreement-link="http://example.com"> </form> '; return $content; } add_shortcode ( 'turbocontactform', 'turbocontactform_shortcode' ); Форма обратной связи будет выведена в полном виде только на турбо-страницах при использовании шорткода [turbocontactform]. в) Вы можете вывести кнопку, при клике на которую будет выведена форма обратной связи (шорткодом, выводимым только на турбо-страницах). Для этого используйте код: function turbocontactformbutton_shortcode( $atts, $content ) { //получаем настройки плагина, чтобы узнать имя RSS-ленты $yturbo_options = get_option('yturbo_options'); $rssturboname = $yturbo_options['ytrssname']; //если это не наша RSS-лента, то шорткод будет удален if ( ! is_feed($rssturboname) ) return ''; //создаем кнопку, выводящую по клику форму обратной связи //data-send-to должен содержать email, принадлежащий вашему домену //при заполнении data-agreement-company обязательно нужно указать и data-agreement-link $content = ' <button formaction="mailto:mail@example.com" data-background-color="#5B97B0" data-color="white" data-primary="true" data-send-to="mail@example.com" data-agreement-company="ООО Ромашка" data-agreement-link="http://example.com">Оставить заявку </button> '; return $content; } add_shortcode ( 'turbocontactformbutton', 'turbocontactformbutton_shortcode' ); Шорткод [turbocontactformbutton] выведет кнопку "Оставить заявку", при клике на которую будет открыта форма обратной связи (и кнопка и форма обратной связи будут выведены только на турбо-страницах). Шаблоны и плагин Advanced Custom Fields В шаблонах записей можно использовать произвольные поля. Для этого достаточно обернуть название произвольного поля символами %% (пример - %%_aioseop_title%%). Однако, при использовании произвольных полей, созданных плагином Advanced Custom Fields зачастую получить значение этих произвольных полей затруднительно, так как ACF хранит многие поля в своем собственном формате. Как это обойти? В плагине есть фильтр шаблонов yturbo_the_template, которым можно воспользоваться. Покажу на примере, предположим у вас в ACF созданы произвольное поля: myimage - тип "Изображение", возвращаемое значение "Массив изображения". steps - тип "Повторитель", внутри есть произвольные поля: image - тип "Изображение", возвращаемое значение "Ссылка на изображение"; text - тип "Текст". Если вы пропишите в шаблоне: %%myimage%% %%steps%% %%post_content%% То в результате получите что-то типа: <p>92332</p> <p>контент записи</p> То есть вместо картинки вы получили ID этого массива картинок, а поле типа "Повторитель" вообще было проигнорировано. Вот для обработки таких нестандартных произвольных полей и нужен фильтр yturbo_the_template. Вот пример кода, обрабатывающего эти поля: //обработка произвольных полей плагина ACF begin function yturbo_acf_template( $content ) { //обрабатываем только нужные нам поля (остальные обработает плагин RSS for Yandex Turbo) if (preg_match_all("/%%(.*?)%%/i", $content, $res)) { foreach ($res[0] as $r) { //обрабатываем поле %%myimage%% (заменяем его на результат работы функции ct_get_myimage) if($r == '%%myimage%%') { $content = str_replace($r, ct_get_myimage(), $content); } //обрабатываем поле %%steps%% (заменяем его на результат работы функции ct_get_steps() ) if($r == '%%steps%%') { $content = str_replace($r, ct_get_steps(), $content); } } } return $content; } add_filter( 'yturbo_the_template', 'yturbo_acf_template' ); //обработка произвольных полей плагина ACF end //обработка произвольного поля %%myimage%% begin function ct_get_myimage() { if ($field = get_field('myimage')) { $output = '<figure><img src="' . $field['sizes']['photo'] . '" /></figure>'; } return $output; } //обработка произвольного поля %%myimage%% end //обработка произвольного поля %%steps%% begin function ct_get_steps() { if ($items = get_field('steps')) { $count = 0; $i = 1; foreach ($items as $item) {$count++;} foreach ($items as $item) { $output .= '<h3>Шаг ' . $i . ' из ' . $count . ' </h3>'; $i++; $output .= '<figure><img src="' . $item['image'] . '" /></figure>'; $output .= $item['text']; } } return $output; } //обработка произвольного поля %%steps%% end Принцип довольно простой и я думаю, что вам должно быть тут все понятно. Результатом этого кода будет что-то типа: <figure><img src="http://site.com/wp-content/uploads/2018/06/cover-47.jpg" /></figure> <h3>Шаг 1 из 2 </h3> <figure><img src="http://site.com/wp-content/uploads/2018/06/cover-45.jpg" /></figure> <p>первое изображение</p> <h3>Шаг 2 из 2 </h3> <figure><img src="http://site.com/wp-content/uploads/2018/06/cover-38.jpg" /></figure> <p>второе изображение</p> <p>контент записи</p> Учтите, что результат вывода вашего шаблона будет потом обработан фильтрами плагина. Это может вызвать определенные проблемы, так как фильтры плагина удалят всю лишнюю разметку, которая вам может быть нужна. Например, если вы пытаетесь создать турбо-галерею, а плагин каждую вашу картинку оборачивает в тег <figure>, что портит разметку турбо-галереи. В таком случае вам нужно воспользоваться фильтром yturbo_before_ads, который срабатывает почти в самом конце обработки контента записи прямо перед вставкой рекламы. Однако, ваши переменные не должны быть обернуты символами %% (их содержимое будет удалено при обработке шаблона). Воспользуйтесь любыми другими символами, чтобы отфильтровать потом вашу переменную.