如何在WordPress的Ajax处理程序中调用主题的functions.php中的方法?

时间:2018-11-23 10:29:12

标签: javascript php jquery html wordpress

我在主题的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主题吗?

感谢您的帮助。谢谢

1 个答案:

答案 0 :(得分:1)

尝试使用操作挂钩,而不要创建一个调用短代码的函数。通过替换此行

在您的ajax处理程序中调用它
klarna_checkout_sc();

使用

do_action( 'kco_wc_before_checkout_form' );

来源是https://docs.woocommerce.com/document/klarna-checkout-hooks-actions-filters/

相关问题