我有一个类,其构造函数如下:
public function __construct( $content_type, $filter_fields, $meta_query = \'\', $taxonomy = \'\') {
if ( !empty ( $content_type ) ) {
add_action(\'wp_ajax_myfilter\', array($this, \'filter_function\'));
add_action(\'wp_ajax_nopriv_myfilter\', array($this, \'filter_function));
...
我创建了该类的两个实例,如下所示(filter\\u list是一个数组,其中包含与此目的无关的属性)
global $filter_builder;
foreach ($filter_list as $filter ) {
$filter_builder[$filter[\'content_type\']] = new FilterBuilder(
$filter[ \'content_type\' ], $filter[ \'filter_fields\' ], $filter[\'meta_query\'], $filter[\'taxonomy\']
);
}
实例创建正确,一切正常,直到进行ajax调用并调用回调函数“filter\\u function”。理论上,每个实例在创建时都有自己的回调函数,但是,每次进行ajax调用时,都会调用全局数组的第一个实例的函数。
全局数组有两个实例,当我尝试调试回调时,似乎对这两个实例调用了相同的回调。
即使回调具有相同的名称,也不会有什么不同。我创建了一个匿名函数,这种奇怪的行为还在继续。
我有什么遗漏吗?回调函数取决于调用时的内容类型,并且它始终默认为数组中首先定义的post类型。
以下是简化的实例创建,以防有所帮助:
$filter_list = array(
array(
\'content_type\' => \'event\',
\'filter_fields\' => array(
// Text to Display => Field Name
\'Suburb\' => \'city\',
\'Postal Code\' => \'zip\',
),
\'meta_query\' => \'\',
\'taxonomy\' => \'\',
),
array(
\'content_type\' => \'contact_center\',
\'filter_fields\' => array(
// Text to Display => Field Name
\'Suburb\' => \'suburb\',
\'Postal Code\' => \'postal_code\',
),
\'meta_query\' => \'\',
\'taxonomy\' => \'\',
),
);
如果你能做到这一点,我将向你表示感谢,如果你能提供帮助,我将更加感谢你!:-)