gpt4 book ai didi

php - wp_ajax_ 使用面向对象的 Action 处理程序的 Action ?

转载 作者:行者123 更新时间:2023-12-04 17:00:36 25 4
gpt4 key购买 nike

我正在尝试将 ajax 操作传递给/wp-admin/admin-ajax.php,但是我似乎无法让它调用任何使用类封装命名空间的函数。我收到以下错误:

Warning:  call_user_func_array() expects parameter 1 to be a valid callback, class 'PHP_faq_backend' not found in /wp-includes/plugin.php

我的操作如下:
add_action('wp_ajax_edit_form', array('PHP_faq_backend', 'edit_form'));

显然我不想通过修改 admin-ajax.php 文件来强制执行此操作,但是如何加载我的类文件以便该操作起作用?

最佳答案

确保在 Wordpress 主题 (functions.php) 或插件中的某处包含您的类文件。

我通常使用这样的东西;

<?php
class Some_Class {

public function __construct() {
//logged in users
add_action('wp_ajax_some_method', array($this,'some_method'));
//non logged in users
add_action('wp_ajax_nopriv_some_method', array($this,'some_method'));
}

public function some_method(){
//check nonce values etc
if ( ! isset( $_REQUEST['some_nonce'] ) || ! wp_verify_nonce( $_REQUEST['some_nonce'], 'class_some_nonce' ) ) {
wp_die(__('Naughty', 'some-class-textdomain'));
}

//proceed with post data validation - then execute method
}

}

$some_class_instance = new Some_Class();
?>

以上用于从类实例中注册操作。

关于php - wp_ajax_ 使用面向对象的 Action 处理程序的 Action ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12957040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com