Добавить настраиваемое поле внутри do_shortcode - PullRequest
0 голосов
/ 20 марта 2020

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

Код, который извлекает данные настраиваемого поля, таков:

<?php the_field('website_address'); ?>

Короткий код, который позволяет мне выбрать адрес электронной почты назначения на уровне шаблона:

<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="xxxxxx@example.com"]'); ?>

Поэтому мне нужно добавить адрес_адреса в шорткод. Я пробовал следующее:

<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="<?php the_field('website_address'); ?>"]'); ?>

Но у него есть тег PHP внутри тега PHP, поэтому он не работает ...

Итак, я попробовал это:

<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="the_field('website_address')"]'); ?>

<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="get_field('website_address')"]'); ?>

<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email=".get_field('website_address')."]'); ?>

<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="'.get_field('website_address').'"]'); ?>

Ни один из них не работает правильно, некоторые даже ломают страницу.

Я изо всех сил пытаюсь найти ответ, поэтому мне было интересно, может ли кто-нибудь просветить меня - я мог бы даже думать обо всем этом неправильно! Большое спасибо за просмотр

add_filter( 'shortcode_atts_wpcf7', 'custom_shortcode_atts_wpcf7_filter', 10, 3 );

function custom_shortcode_atts_wpcf7_filter( $out, $pairs, $atts ) {
  $my_attr = 'destination-email';

  if ( isset( $atts[$my_attr] ) ) {
    $out[$my_attr] = $atts[$my_attr];
  }

  return $out;
}

Это со страницы: https://contactform7.com/getting-default-values-from-shortcode-attributes/

1 Ответ

0 голосов
/ 23 марта 2020

Хорошо, я нашел способ сделать это, как описано здесь: https://wordpress.org/support/topic/getting-emaip-recipient-from-shortcode/

  1. Добавить шорткод с адресом электронной почты получателя на странице или в сообщении, где Вы хотите показать форму:

    [contact-form-7 id = "123" title = "Контактная форма" destination-email = "xxxxxx@example.com"]

  2. Добавьте следующий код к функциям темы. php или свой пользовательский плагин.

    add_filter ('shortcode_atts_wpcf7', 'custom_shortcode_atts_wpcf7_filter', 10, 3); function custom_shortcode_atts_wpcf7_filter ($ out, $ pair, $ atts) {$ my_attr = 'destination-email'; if (isset ($ atts [$ my_attr])) {$ out [$ my_attr] = $ atts [$ my_attr]; } return $ out;

} 3. Добавьте этот код на вкладку формы:

[email* destination-email default:shortcode_attr]

// Если вы хотите, чтобы это поле было скрыто, вы можете использовать этот код вместо:

[hidden destination-email default:shortcode_attr]
В cforms7 Mail Tab добавьте код [destination-email] в поле «Кому».

Если вы использовали скрытое поле, будет отображаться ошибка «Неверный синтаксис почтового ящика», но в В моем случае я могу проигнорировать его, потому что он работает.

Если поле «Кому» со скрытым полем не работает, вы можете добавить идентификатор к шорткоду электронной почты:

[email* destination-email default:shortcode_attr id:hidefield]

и скрыть поле с css:

#hidefield {
    display: none;
}

Тогда я просто использовал это:

<?php echo do_shortcode('[contact-form-7 id="123" title="Contact Form" destination-email="'.get_field('email_address').'"]'); ?>

, чтобы добавить адрес электронной почты из пользовательского типа сообщения :)

Спасибо всем кто ответил!

...