如何在Contact Form 7和Ajax中使用`do_shortcode`

时间:2017-05-02 03:44:01

标签: jquery ajax wordpress contact-form-7

我在wordpress中为一个表单和ajax创建了一个插件。当页面通过ajax成功加载内容时,我想在页面上使用联系表单7。我使用do_shortcode()标签作为联系表格7常见问题解答,但它无法显示表格。以下是我正在做的例子:

function.php

add_action( 'wp_enqueue_scripts', 'ajax_test_enqueue_scripts' );

function ajax_test_enqueue_scripts() {

    wp_enqueue_script( 'season', plugins_url( '/form-submit.js', __FILE__ ), array('jquery'), '1.0', true );

    wp_localize_script( 'season', 'myAjax', array(
        'ajax_url' => admin_url( 'admin-ajax.php' )
    ));

}

add_action('wp_ajax_confirmRequest', '_myConfirmHandler');
add_action('wp_ajax_nopriv_confirmRequest', '_myConfirmHandler');

function _myConfirmHandler()
{
    if(isset($_POST['vehicle_no']))
    {
        $vehicle_no = $_POST['vehicle_no'];
        $email = $_POST['email'];

        echo "Your Data: <br>$vehicle_no <br>$email<p />";
        echo do_shortcode('[cfdb-table form="season parking form_copy" filter="your-platno=' . $vehicle_no . '"]');
        echo do_shortcode('[contact-form-7 id="6871" title="season parking form_copy"]'); 
    }

    exit;
}

形状submit.js

jQuery(document).ready(function($) {
    $('#submit_payment').click(function(e){
        e.preventDefault();
        var str = $("form[name=season-form]").serialize();
        $.ajax({
            type: "POST",
            url: myAjax.ajax_url,
            data: str + '&action=confirmRequest' 
        }).done(function(data){
            $("#result").html(data);
        });
    });
});
  1. 它只会输出[contact-form-7 id =“6871”title =“季节停车 form_copy“]
  2. 我也使用联系表单数据库,但显示没有的数据 问题。
  3. 我做了一个研究,发现了类似的问题,但我仍然无法解决。 link
  4. 如果我直接在主题页面上编写代码,它将输出表单没有问题。我可以知道如何解决吗?
  5. 我还在学习用WP开发。

2 个答案:

答案 0 :(得分:1)

H @Amran,

更改以下代码:

add_action('wp_ajax_confirmRequest', '_myConfirmHandler');
add_action('wp_ajax_nopriv_confirmRequest', '_myConfirmHandler');

add_action('wp_ajax_myConfirmHandler', 'myConfirmHandler');
add_action('wp_ajax_nopriv_myConfirmHandler', 'myConfirmHandler');

查看错误是否仍然存在。

将代码exit()更改为wp_die()

答案 1 :(得分:1)

update您的 WordPress 联系表单7 联系表单数据库到他们的最新版本。我在查找代码中的错误时使用了同样的方法,发现它工作正常。我希望它对你有所帮助。