如何将 `do_shortcode` 与 Contact Form 7 和 Ajax 一起使用
How to use `do_shortcode` with Contact Form 7 and Ajax
我在 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);
});
});
});
- 它只会输出[contact-form-7 id="6871" title="season parking
form_copy"]
- 我也使用联系表格数据库,但它显示的数据没有
问题。
- 我研究了一下,发现了这个类似的问题,但还是无法解决。 link
- 如果我直接在主题页面上写代码,它会输出表单没有问题。我可以知道如何解决吗?
我还在学习WP开发的过程中。
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()
请update
您的WordPress、联系表格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);
});
});
});
- 它只会输出[contact-form-7 id="6871" title="season parking form_copy"]
- 我也使用联系表格数据库,但它显示的数据没有 问题。
- 我研究了一下,发现了这个类似的问题,但还是无法解决。 link
- 如果我直接在主题页面上写代码,它会输出表单没有问题。我可以知道如何解决吗?
我还在学习WP开发的过程中。
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()
请update
您的WordPress、联系表格7和联系表格数据库 到他们的最新版本。我在查找代码中的错误时使用了相同的方法,发现它工作正常。希望对你有所帮助。