wpcf7_form_action_url хук-фільтрCF7 1.0

Дозволяє змінити 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() .

Приклади

0

#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();
}

Де викликається хук

Де використовується хук в Contact Form 7

Використання не знайдено.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *