八个月前,我问了几乎相同的问题there. 但到目前为止,这个问题仍然没有得到解决。
但我还有一个想法,为什么它会失败。在此期间,我的代码得到了改进。我有多个具有相同结构的类:
<?php
class McCustomPost { ... }
$wpMcCustomPost = new McCustomPost();
?>
...
<?php
class McAdmin { ... }
$wpMcAdmin = new McAdmin();
?>
然后我有了我的“starter”文件,它需要所有文件,并且有插件头:
<?php
/*
Plugin Name: MC 2.0
Plugin URI: ...
Description: ...
Version: 0.0.75
Author: ...
Author URI: ...
License: GPL2
*/
define( \'MC_PLUGIN_DIR\', plugin_dir_path( __FILE__ ) );
require_once( MC_PLUGIN_DIR . \'class.mc.php\' );
require_once( MC_PLUGIN_DIR . \'class.mc-admin.php\' );
...
require_once( MC_PLUGIN_DIR . \'class.mc-custom-post.php\' );
register_activation_hook( __FILE__, array( \'Mc\', \'plugin_activation\' ) );
register_deactivation_hook( __FILE__, array( \'Mc\', \'plugin_deactivation\' ) );
$wpMc = new Mc();
?>
在
require_once
admin和custom post类得到了正确的实例化。但是,当我从admin类发出ajax请求时,返回的请求较新。它到达了JS文件,但在那之后没有调用回调,我想没有找到它。
<?php
class McAdmin {
protected $pluginPath;
private $dbHandler;
public function __construct() {
$this->pluginPath = dirname(__FILE__);
add_action( \'admin_enqueue_scripts\', array( $this,\'add_admin_scripts\') );
add_action( \'wp_ajax_blubb\', array( $this, \'add_vehicle\' ) );
}
public function add_admin_scripts( ){
wp_enqueue_script( \'admin_scripts\', plugins_url( \'js/functions.admin.js\', __FILE__ ), array(\'jquery\') );
// wp_localize_script(\'admin_scripts\', \'ajax_var\', array(
// \'nonce\' => wp_create_nonce( \'ajax-nonce\' )
// ) );
}
public function add_vehicle()
{
// $nonce = $_POST[\'nonce\'];
// if ( ! wp_verify_nonce( $nonce, \'ajax-nonce\' ) )
// die ( \'Busted!\');
$title = $_POST[\'id\'];
wp_die("Post Id: " . $title);
exit;
}
...
}
$wpMcAdmin = new McAdmin();
?>
我的JS文件-未执行成功回调。。。
$(\'.add-vehicle\').click(function(){
var data = {
action: "blubb",
// nonce: ajax_var.nonce,
id: 1
};
$.post(
ajaxurl,
data,
function( response ) { //on success
alert(\'Server response from the AJAX URL \' + response);
});
});
我想,在
McAdmin()
内部类别
Mc()
回拨的电话不知道该回哪里。如何在正确的类实例中获取回调(
McAdmin()
)?
感谢(&A);BR,
麦贝克