无法使用wordpress检索术语,当未使用ajax请求登录时



我遇到了一个奇怪的问题。我有两个html列表,当我选择一个地区时,它会向wordpress发送一个ajax请求,并返回该地区的省份列表。问题是,当我们没有登录时,wordpress的get_terms()函数不会检索任何省份,即使他正确地收到了数据。

这是代码,希望有人能帮我。

<?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();
}
?>

EDIT:问题似乎是get_terms函数,当一个未登录的用户执行ajax调用时,它会返回一个空数组。当用户登录时,数组包含类别列表。

第二版:我仍然有这个问题,在谷歌上搜索,我找不到有同样问题的人。我不知道现在该怎么办,也许我错过了什么,但我不知道该怎么办。请帮帮我:)。

尝试使您的ajax请求类型为POST

否则,请尝试$_REQUEST,而不是$POST。因为默认情况下,请求类型为$_GET,这会导致您的案例出现问题

我得到了答案!它是一个插件:角色范围。它对分类法进行了限制,我取消了对这个特定紫杉的限制,现在它起作用了。

最新更新