我在主题的functions.php文件中有一个方法,我想通过ajax处理程序调用它。
拥有ajax处理程序的目的是避免为每个ajax请求加载wordpress堆栈(包括插件)。
functions.php
function klarna_checkout_sc() {
echo do_shortcode('[woocommerce_klarna_]');
exit();
}
add_action('wp_ajax_nopriv_klarnacheckoutsc', 'klarna_checkout_sc');
add_action('wp_ajax_klarnacheckoutsc', 'klarna_checkout_sc');
jquery脚本:
$.ajax({
type: 'GET',
url: 'https://mywebsite/wp-content/plugins/zb-ajax-handler/zbajaxhandler.php',
cache: false,
data: { action: 'klarnacheckoutsc'},
success: function(data) {
},
error: function(xhr,status,error) {
console.log('klarnacheckoutsc error:'+error);
}
});
zbajaxhandler.php:(ajax处理程序)
<?php
define('SHORTINIT',true);
require_once('../../../wp-load.php');
klarna_checkout_sc();
echo "success";
?>
在ajax处理程序文件中添加500 Internal Server Error
时,我在上面遇到了klarna_checkout_sc()
。
您知道如何正确调用klarna_checkout_sc()
方法来激活我的Divi主题吗?
感谢您的帮助。谢谢
答案 0 :(得分:1)
尝试使用操作挂钩,而不要创建一个调用短代码的函数。通过替换此行
在您的ajax处理程序中调用它klarna_checkout_sc();
使用
do_action( 'kco_wc_before_checkout_form' );
来源是https://docs.woocommerce.com/document/klarna-checkout-hooks-actions-filters/