我有一个奇怪的问题。 我有两个html列表,当我选择一个地区时,它向wordpress发送ajax请求并返回该地区省份的列表。 问题是,即使他没有正确接收数据,我们未登录时,wordpress的get_terms()函数也不会检索任何省份。无法检索与WordPress的条款,当没有用AJAX请求登录
这是代码,希望有人能帮助我。
<?php
/*
Plugin Name: Ajax Départements
Description: Récupère les sous categories(départements) d'une categorie(région)
Version: 0.1
Author: EnessFr
*/
//Enregstrement du trigger et du callback
add_action('wp_ajax_dpt-ajax-request', 'ajaxGetDepartement');
add_action('wp_ajax_nopriv_dpt-ajax-request', 'ajaxGetDepartement');
//insertion du script
wp_enqueue_script('dpt-ajax-request', plugin_dir_url(__FILE__) . 'ajax.js', array('jquery'), null, true);
//Enregistrement de l'url ajax
wp_localize_script('dpt-ajax-request', 'dptAjaxRequest', array('ajaxurl' => admin_url('admin-ajax.php')));
//callback ajax
function ajaxGetDepartement(){
$departements = null;
$regionToExclude = array();
$tmpRegionName = $_POST['region'];
//Récupération des régions parents
$regionsParents = get_terms('category',array(
'parent' => 0,
'hide_empty' => false,
));
foreach($regionsParents as $rg){
array_push($regionToExclude, $rg->term_id);
}
array_push($regionToExclude, 1); // 1 = catégorie non-classé
//Récupération de la région passée en arguments
if(strval($_POST['region']) != 'wqsftaxoall'){ // une région valable est reçus
$tmpRegion = get_terms('category',array(
'slug' => $tmpRegionName,
'hide_empty' => false,
)
);
$regionParent = $tmpRegion[0]->term_id;
//Récupération des départements
$departements = get_terms('category',array(
'child_of' => $regionParent,
'hide_empty' => false,
'orderby' => 'name',
'order' => 'ASC',
'exclude' => $regionToExclude,
));
}else{ //récupération de tous les départements
//Récupération des départements
$departements = get_terms('category',array(
'hide_empty' => false,
'orderby' => 'name',
'order' => 'ASC',
'exclude' => $regionToExclude,
));
}
//Construction et afichage des résultats
$options = '<option selected value="wqsftaxoall">Tous les départements</option>';
foreach($departements as $dpt){
$options .= '<option value="'.$dpt->slug.'">'.$dpt->name.'</option>';
}
echo $options;
die();
}
?>
编辑:看来问题是get_terms函数返回时,没有登录用户执行THA AJAX调用空数组。当用户登录时,该数组包含类别列表。
编辑2:我仍然有问题,搜索谷歌,我找不到任何人有同样的问题。我不知道现在该怎么做,也许我错过了一些东西,但我不知道是什么。请帮帮我 :)。
你有没有检查过,当你没有在ajaxurl中闲逛@你的正面和你的请求被正确调用你有没有测试过这个提醒返回的数据? – 2013-02-20 09:17:25
是的,网址是可用的,它返回的选项值是'<选择值=“wqsftaxoall”> Tous lesdépartements'。 另外,我做了一个$ departements和$ tmpRegion的var_dump,它们是null。但$ _POST ['region']包含期望值。 – 2013-02-20 09:20:01