我有一个自定义界面,在运行时使用30多个ajax文件
某些文件仅在类别中使用。php而其他的仅在页面中使用。php。。。
我在函数中包含了ajax加载程序php文件。php文件
example:
include TEMPLATEPATH . \'/ajaxLoops/ajax-open_client_editform.php\';
include TEMPLATEPATH . \'/ajaxLoops/ajax-submit_client_editform.php\';
这一切都很好,但当我尝试在函数中直接使用is\\u页面或is\\u类别有条件地加载它们时。php ajax函数停止工作。
示例:
if(is_page()) {
include TEMPLATEPATH . \'/ajaxLoops/ajax-open_client_editform.php\';
}
include TEMPLATEPATH . \'/ajaxLoops/ajax-submit_client_editform.php\';
我想这是一个装载顺序的问题或一些我不知道的其他问题。。。。你能帮我理解我的方法的问题吗?或者有条件加载此文件的替代方法?。。。
干杯,萨吉夫。
EDIT 1 (.PHP AJAX LOADER FILE):
<?php
wp_enqueue_script( \'ajax-simple-example\', get_stylesheet_directory_uri().\'/ajaxLoops/ajax-simple_example.js\', array(\'jquery\'), 1.0 ); // jQuery will be included automatically
wp_localize_script( \'ajax-simple-example\', \'ajax_object\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) ) ); // setting ajaxurl
add_action( \'wp_ajax_action_simple_example\', \'ajax_simple_example\' ); // ajax for logged in users
function ajax_simple_example() {
// just an empty example for my question
// in stackexchange
echo \'<div id="success">\'.$successMsg.\'</div>\';
die(); // stop executing script
}
?>
最合适的回答,由SO网友:Bainternet 整理而成
当您调用admin ajax时。php未生成任何查询,因此is_page()
或is_category()
或者任何基于查询的条件标记永远不会返回true。更好的方法是将文件包含在ajax回调中,意思如下:
add_action(\'wp_ajax_PAGE_ONLY_ACTION\',\'PAGE_ONLY_Function\');
function PAGE_ONLY_Function(){
include TEMPLATEPATH . \'/ajaxLoops/ajax-open_client_editform.php\';
/**
* do your page only ajax
*/
die();
}
add_action(\'wp_ajax_CATEGORY_ONLY_ACTION\',\'CATEGORY_ONLY_Function\');
function CATEGORY_ONLY_Function(){
include TEMPLATEPATH . \'/ajaxLoops/ajax-submit_client_editform.php\';
/**
* do your Category only ajax
*/
die();
}
因此,您可以一直添加动作挂钩,但仅在需要时才包含文件。