Как использовать другие шорткоды внутри форм Contact Form 7?

12 мар. 2012 г., 13:42:59
Просмотры: 64.1K
Голосов: 19

Я заметил, что любые шорткоды, которые не являются встроенными шорткодами Contact Form 7, не работают.

Например: я пытаюсь использовать шорткод аккордеона между элементами формы в Contact Form 7. Но код не работает.

Как решить эту проблему без редактирования основных файлов Contact Form 7?

1
Комментарии

Не уверен, что это возможно. Шорткоды должны быть на странице или в записи, разве нет? Не думаю, что можно разместить шорткод между элементами формы. Где бы вы их разместили? ... в настройках Contact Form 7? Насколько мне известно, там это сделать нельзя (если только вы не следуете каким-то инструкциям по Contact Form 7, о которых я не слышал).

byronyasgur byronyasgur
12 мар. 2012 г. 14:59:42
Все ответы на вопрос 1
4
25

Есть два способа сделать то, что вам нужно. Первый способ — добавить этот код в файл functions.php плагина Contact Form 7:

add_filter( 'wpcf7_form_elements', 'mycustom_wpcf7_form_elements' );

function mycustom_wpcf7_form_elements( $form ) {
$form = do_shortcode( $form );

return $form;
}

Это позволит вам вставлять шорткоды напрямую в CF7. Второй способ — добавить аккордеон вручную с помощью HTML в контактной форме, вот так:

<!-- начало класса .wp-accordion -->
<div class="wp-accordion wpui-light">

    <!-- Панель первой вкладки -->
    <h3 class="wp-tab-title">Вкладка 1</h3>
    <!-- Содержимое первой вкладки -->
    <div class="wp-tab-content">
          Здесь размещается всё содержимое первой вкладки....
    </div><!-- конец первой вкладки -->

      <!-- Аналогично, вторая панель -->
      <h3 class="wp-tab-title">Вкладка 2</h3>
      <div class="wp-tab-content">
            Содержимое второй вкладки
       </div>

</div><!-- конец класса wp-accordion -->

Я считаю, что второй метод предпочтительнее, так как он не требует изменения файлов основного плагина. Надеюсь, это поможет!

12 мар. 2012 г. 19:03:01
Комментарии

На самом деле - вы можете добавить код фильтра в functions.php вашей темы, и шорткоды будут корректно работать внутри формы CF7. Я не могу подтвердить, будет ли работать конкретный шорткод (для аккордеона) или нет - я тестировал только с шорткодом, который не содержит никаких шорткодов CF7, но в целом всё зависит от того, как обрабатывается конкретный шорткод.

Nikola Ivanov Nikolov Nikola Ivanov Nikolov
20 мар. 2013 г. 14:35:50

Действительно, простой add_filter( 'wpcf7_form_elements', 'do_shortcode' ); решает проблему, если добавить его в functions.php дочерней темы.

Evan Mattson Evan Mattson
30 сент. 2013 г. 06:21:01

Если вы хотите использовать один и тот же контент в нескольких местах на вашем сайте, лучше создать шорткод (с возможностью локализации при необходимости), чем копировать и вставлять один и тот же HTML код повсюду.

Craig Tullis Craig Tullis
12 сент. 2014 г. 03:02:48

Я использовал этот код, но он не работает, не могли бы вы помочь? https://wordpress.stackexchange.com/questions/359534/my-shortcode-is-not-working-in-contact-form-7-message-body

Rahul Kumar Rahul Kumar
26 февр. 2020 г. 16:58:16