Как использовать echo do_shortcode для Contact Form 7 в динамически загружаемом php-файле

31 авг. 2014 г., 20:27:00
Просмотры: 19K
Голосов: 0

Я загружаю php-файл, содержащий echo do_shortcode('[contact-form-7 id="568"]'); с помощью jQuery .load(), но шорткод ничего не возвращает.

Я видел этот вопрос и ответ и понимаю, что do_shortcode() недоступен: Почему 'do_shortcode' плагина может не работать в AJAX-запросе?

Но я, к сожалению, никак не могу понять, актуально ли это решение для моей ситуации.

Надеюсь, кто-то сможет помочь пролить свет на эту проблему.

Спасибо.

script.js

$.post(themeurl+ 'save_image.php', { base64_image: ProductDataURL }, function(data) {
    if(data) {
        $( '#popup-download div' ).load( themeurl+ 'downloadform.php' );
    }
});

downloadform.php

<?php
if ( function_exists( 'do_shortcode ' ) )  {
        echo "do_shortcode существует";
} else {
        echo "do_shortcode не существует";  // это выводится
};
echo do_shortcode('[contact-form-7 id="568"]'); // ничего не выводит
?>
3
Комментарии

$.post() это AJAX.

fuxia fuxia
31 авг. 2014 г. 20:54:56

Спасибо, toscho! Я же говорил, что немного не в теме? Вопрос исправлен. :)

Caroline Elisa Caroline Elisa
31 авг. 2014 г. 21:06:20

Не используйте echo do_shortcode https://kovshenin.com/2013/dont-do_shortcode/

Brad Dalton Brad Dalton
3 мар. 2015 г. 12:18:00
Все ответы на вопрос 1
2

Из того, что вы показали, файл downloadform.php не загружает WordPress, поэтому функция do_shortcode() естественно недоступна.

Вам нужно реализовать ваш AJAX, используя эту статью из Codex: http://codex.wordpress.org/AJAX_in_Plugins

Другой вариант, который я бы предложил, — это загрузка контактной формы в скрытый div при первоначальной загрузке страницы, а затем отображение этого скрытого div, когда пользователи нажимают на что-то, что вызывает появление формы. Таким образом, вам вообще не понадобится AJAX.

31 авг. 2014 г. 23:57:16
Комментарии

Спасибо, user2572827. Альтернативный вариант с загрузкой при загрузке страницы не подходит, так как у меня есть динамическое поле в форме, которое обновляется после создания изображения (см. строку 1 кода выше). Так что я читаю и стараюсь как можно лучше понять содержание ссылки, которую вы прислали :)

Caroline Elisa Caroline Elisa
1 сент. 2014 г. 19:08:55

@CarolineElisa, если вы ищете простой способ создать JSON-эндпоинт в WordPress, ознакомьтесь с этой статьёй:

http://ottopress.com/2010/dont-include-wp-load-please/

В частности, с разделом под заголовком "Right way the second".

khromov khromov
1 сент. 2014 г. 23:52:27