使用 AJAX 调用 functions.php 中的 do_shortcode 功能
Call do_shortcode functionality in functions.php with AJAX
我正在尝试为 Profile Builder 插件实现 do_shortcode 功能,以便在从登录表单调用时加载注册表单。由于表单将以相同的模式 window 显示,因此需要通过 AJAX.
加载注册表单
在functions.php中有一个加载简码内容的函数:
add_action( 'wp_ajax_nopriv_do_shortcode', 'do_shortcode' );
add_action( 'wp_ajax_do_shortcode', 'do_shortcode' );
function do_shortcode( ) {
$shortcode = $_REQUEST['shortcode_name'];
ob_start();
echo do_shortcode( $shortcode );
ob_get_contents();
$modal = ob_get_clean();
echo $modal;
die();
}
在模态 window 模板中,我有:
function load() {
jQuery.ajax({
method: 'POST',
url: '/wp-admin/admin-ajax.php',
data: {
action: 'do_shortcode',
shortcode_name: 'wppb-register'
},
success: function(data)
{
jQuery("#my-modal").replaceWith(data);
}
});
}
结果我只收到 'wppb_register' 文本。 我怎样才能得到包含此短代码的注册表?
Do_shortcode 在 ajax 回调中不起作用。
所以我认为我们必须使用新的解决方案。
add_action( 'init', 'do_shortcode_callback');
function do_shortcode_callback() {
if (isset($_REQUEST["action"]) && $_REQUEST["action"] == "do_shortcode") {
$shortcode = $_REQUEST['shortcode_name'];
echo do_shortcode( $shortcode );
exit;
}
}
function load() {
jQuery.ajax({
method: 'POST',
url: '<?php echo site_url('/'); ?>',
data: {
action: 'do_shortcode',
shortcode_name: '[wppb-register]'
},
success: function(data)
{
jQuery("#my-modal").replaceWith(data);
}
});
}
我正在尝试为 Profile Builder 插件实现 do_shortcode 功能,以便在从登录表单调用时加载注册表单。由于表单将以相同的模式 window 显示,因此需要通过 AJAX.
加载注册表单在functions.php中有一个加载简码内容的函数:
add_action( 'wp_ajax_nopriv_do_shortcode', 'do_shortcode' );
add_action( 'wp_ajax_do_shortcode', 'do_shortcode' );
function do_shortcode( ) {
$shortcode = $_REQUEST['shortcode_name'];
ob_start();
echo do_shortcode( $shortcode );
ob_get_contents();
$modal = ob_get_clean();
echo $modal;
die();
}
在模态 window 模板中,我有:
function load() {
jQuery.ajax({
method: 'POST',
url: '/wp-admin/admin-ajax.php',
data: {
action: 'do_shortcode',
shortcode_name: 'wppb-register'
},
success: function(data)
{
jQuery("#my-modal").replaceWith(data);
}
});
}
结果我只收到 'wppb_register' 文本。 我怎样才能得到包含此短代码的注册表?
Do_shortcode 在 ajax 回调中不起作用。 所以我认为我们必须使用新的解决方案。
add_action( 'init', 'do_shortcode_callback');
function do_shortcode_callback() {
if (isset($_REQUEST["action"]) && $_REQUEST["action"] == "do_shortcode") {
$shortcode = $_REQUEST['shortcode_name'];
echo do_shortcode( $shortcode );
exit;
}
}
function load() {
jQuery.ajax({
method: 'POST',
url: '<?php echo site_url('/'); ?>',
data: {
action: 'do_shortcode',
shortcode_name: '[wppb-register]'
},
success: function(data)
{
jQuery("#my-modal").replaceWith(data);
}
});
}