wpcf7_form_action_url
Позволяет изменить URL который указывается в атрибуте action=""
формы Contact Form 7.
Использование
add_filter( 'wpcf7_form_action_url', 'wp_kama_wpcf7_form_action_url_filter' ); /** * Function for `wpcf7_form_action_url` filter-hook. * * @param $url * * @return */ function wp_kama_wpcf7_form_action_url_filter( $url ){ // filter... return $url; }
- $url(строка)
- Сгенерированный URL для формы. Создается функцией wpcf7_get_request_uri().
Примеры
#1 Исправим URL формы при ajax запросе
Например, мы используем аякс запрос, чтобы получить форму. Для этого в обработчике аякс запроса мы используем шорткод.
do_shortcode( '[contact-form-7 id="15" title="Контактная форма 1"]' )
Для созданной формы функция wpcf7_get_request_uri() возмет текущий url запроса, а так как это аякс запрос, там будет URL этого аякс запроса, например такой:
/wp-admin/admin-ajax.php?action=ajaxs_action&ajaxs_nonce=f7f4e21bdf&jxs_act=ajaxs_render_event#wpcf7-f90-o2
Но нам нужно получить относительный #wpcf7-f90-o2
. Для этого перед вызовом шорткода можно добавить фильтр, который изменить получаемый URL на нужный нам. В фильтре удалим текущий URL запроса, оставив, только хэш
// функция создания формы function render_callback_form(){ $callback = ' <div id="callback_form" class="dialog" style="display: none"> <div class="menu__search-modal fancybox-content" id="callback" style="display: inline-block;"> <a href="#" class="link close">✕</a> <div class="callback">Заказ обратного звонка</div> ' . do_shortcode('[contact-form-7 id="15" title="Контактная форма 1"]') . ' </div> </div>'; return $callback; } // Обработчик аякс запроса function ajaxs_render_event(){ // поправим URL формы add_filter( 'wpcf7_form_action_url', function( $url ){ // удалим из URL текущий запрос $url = str_replace( wpcf7_get_request_uri(), '/', $url ); return $url; } ); echo render_callback_form(); }
Где вызывается хук
wpcf7_form_action_url
contact-form-7/includes/contact-form.php 564
$url = apply_filters( 'wpcf7_form_action_url', $url );