Spartak-rnd
@Spartak-rnd

Как вывести контактную форму?

Доброго времени суток.
Есть функция шорткода, которая выводит записи по ID.
Внутри кода есть кнопка которая выводит модальное окно с формой связи, форму связи пытаюсь вывести с помощью текстового поля ACF . Проблема в том что поле не выводится, модальное окно пустое.

Вопрос. Как вывести ACF поле в этой конструкции?

Любое ваше мнение будет полезно.
Спасибо.
add_shortcode('spShtcode_services', 'spShtcode_function');
function spShtcode_function($atts)
{
	$atts = shortcode_atts(array(
		'id' => '',
	), $atts);
	$args = array(
		'post_type' => 'services', //тип записи
		'post_status' => 'publish',
		'include' => $atts['id'],
		);
	$out_posts = get_posts($args);
	$out = '<div class="uk-grid-match uk-child-width-1-3@m uk-text-center" uk-grid>';
	foreach ($out_posts as $post) {
		setup_postdata($post);
		$out .= '<div class="uk-padding-small">';
		$out .= '<div class="uk-card uk-card-default uk-card-body uk-card-hover">';

		$out .= '<a href="' . get_permalink($post->ID) . '">' . get_the_post_thumbnail($post->ID, 'large', array('class' => 'uk-img')) . '</a> ' . ' <h3 class="uk-card-title"> <a href=" ' . get_the_permalink($post->ID) . ' ">'. get_the_title($post->ID) . ' </a></h3>';

		$out .= '<div class="card-excerpt">' . get_the_excerpt($post->ID). '</div>';

		$out .= '<a class="uk-button uk-button-default uk-width-1-1" href="' . get_permalink($post->ID) . '">' . esc_html__('Подробнее', 'default') . '</a> ';

//Модальное окно

$out .= '<button class="uk-button uk-button-primary uk-width-1-1 uk-margin-small" type="button" uk-toggle="target: #modal-service">'
. esc_html__('Записаться', 'default') .'</button>';  //это просто кнопка

$out .= '<div id="modal-service" uk-modal>'
   . '<div class="uk-modal-dialog uk-modal-body uk-margin-auto-vertical">'
       .' <button class="uk-modal-close-default" type="button" uk-close>
	   </button>';   //это модальное окно
 
 
 
	   //  !!! Здесь пытаюсь вывести   контактную форму (добавленна через поле ACF) - ни чего не получается !!!!!
	   if($cform=get_field('forma')) {
		  echo $cform;
	   }
 
 
//modal end


	$out .= '</div>';
	$out .= '</div>';
	$out .= '</div>';
	$out .= '</div>';

	}
	$out .= '  </div> ';
	wp_reset_postdata();
	return $out;
}
  • Вопрос задан
  • 44 просмотра
Решения вопроса 1
V_A_B
@V_A_B
¯\_(ツ)_/¯
есть два варианта пилить шорткод:
1 положить все в переменную и отдать return`ом
function spShtcode_function($atts)
{...
$out='';
$out .= 
$out .= 

...
return $out;
}

2 писать HTMLкой через ob_start() и return ob_get_clean()
function spShtcode_function($atts)
{
ob_start();
...
//все через echo или через HTML: ?>аля ля<?php
echo '<div class="uk-padding-small">';
...
     if($cform=get_field('forma')) {
      echo $cform;
     }

...
return ob_get_clean();
}


Посмотрите внимательно, что вы делаете!
Вы действуете по 1 варианту, а форму пилите через echo $cform; т.е. не кладете в переменную, а выводите на экран.
у Вас поле просто улетает в не известную область (её выбивает из разметки)... модалка с абсолютными стилями (риторический вопрос)? поищите за пределами экрана в инженерной панели
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы