WordPress как на ладони

AJAXS подставляется свои данные в URL формы Contact form 7

Никак не могу понять такую штуку. AJAXS обращается к функции, в которой создается всплывающее окно с формой Contact 7, но по непонятной мне логике атрибут action при выводе формы в итоге выглядит так

action="/wp-admin/admin-ajax.php?action=ajaxs_action&ajaxs_nonce=f7f4e21bdf&jxs_act=ajaxs_render_event#wpcf7-f90-o2"

Почему туда подставляется этот кусок обращения к admin-ajax?

Заметки к вопросу:
Kama 2.6 лет назад

Можно код, не понятно толком что за проблема.

При создании формы, ты в action атрибут что указываешь вообще? Походу туда ставиться текущий URL, а он для ajaxs запроса именно такой:

/wp-admin/admin-ajax.php?action=ajaxs_action&ajaxs_nonce=f7f4e21bdf&jxs_act=ajaxs_render_event

Укажи правильный action для формы вручную.

aleksandr-636 2.6 лет назад

Там action формирует плагин Contact Form 7, вот как это происходит

<?php
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($jx)
{
	$render = 'render_' . $jx->event_id;
	$jx->done($render($jx));
}
aleksandr-636 2.6 лет назад

в action должно вот что быть: /#wpcf7-f90-o1

0
aleksandr-636
2.6 лет назад
  • 0
    Kama9616

    Тут в примере смотри решение: https://wp-kama.ru/plugin/contact-form-7/hook/wpcf7_form_action_url

    Код не тестировал, если что с тебя багрепорты.

    aleksandr-636 2.6 лет назад

    Спасибо, заработала.

    $url = str_replace(wpcf7_get_request_uri(), '/', $url);

    Там слеш нужен. И еще пришлось покопаться в js файле Contact Form, он не видел события, ничего лучше не придумал, кроме как сделать вот так

            function initForm() {
    			$('div.wpcf7 > form').each(function () {
    				var $form = $(this);
    				wpcf7.initForm($form);
    
    				if (wpcf7.cached) {
    					wpcf7.refill($form);
    				}
    			});
    		}
    
    		initForm();
    
    		$(document).one("DOMNodeInserted", '#callback_form', function (event) {
    			initForm();
    		});
    Kama 2.6 лет назад

    Это ты файл плагина изменил, или добавил такой код у себя на сайте?

    aleksandr-636 2.6 лет назад

    Файл contact form с js скриптами изменил, что б он при появлении формы инициализировал ее. Все работает, но одна проблема осталась, гугл капча отказывается по аяксу грузится, не могу понять в чем дело...

    Kama 2.6 лет назад

    Если ты файл плагина изменил, изменения же слетят при очередном обновлении плагина.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация