我的主题的 functions.php 文件中有一个方法,我想通过 ajax 处理程序调用它。
拥有 ajax 处理程序的目的是避免为每个 ajax 请求加载 wordpress 堆栈(包括插件)..
函数.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";
?>
当 klarna_checkout_sc()
添加到 ajax 处理程序文件中时,我遇到了上面的 500 内部服务器错误
。
你知道如何正确调用 klarna_checkout_sc()
方法到我的事件 Divi 主题吗?
感谢任何帮助。谢谢
最佳答案
尝试使用 Action Hook 而不是创建调用短代码的函数。通过替换此行在您的 ajax 处理程序中调用它
klarna_checkout_sc();
与
do_action( 'kco_wc_before_checkout_form' );
来源是https://docs.woocommerce.com/document/klarna-checkout-hooks-actions-filters/
关于javascript - 如何从 WordPress 中的 ajax 处理程序调用我主题的 functions.php 中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53444949/