0

奇妙な問題があります。2つのhtmlリストがあります。リージョンを選択すると、ajaxリクエストがwordpressに送信され、このリージョンの州のリストが返されます。問題は、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();
}

?>

編集:問題は、ログに記録されていないユーザーがajax呼び出しを実行したときに空の配列を返すget_terms関数にあるようです。ユーザーがログインすると、配列にカテゴリリストが含まれます。

EDIT2:私はまだ問題を抱えています、グーグルで検索しました、私は同じ問題を抱えている人を見つけることができません。私は今何をすべきかわからない、多分私は何かを逃したが、私は何を知らない。お願い助けて :)。

4

2 に答える 2

0

タイプPOSTのajaxリクエストを作成してみてください

また

それ以外の場合は、$_POSTの代わりに$ _REQUESTを試してください。デフォルトでは、リクエストは$ _GETタイプであり、ケースに問題が発生します。

于 2013-02-20T09:31:00.207 に答える
0

答えが出ました!それはプラグインでした: Role Scope。分類法に制限を加えました。この特定の分類法の制限を解除したところ、機能するようになりました。

于 2013-03-29T19:36:52.423 に答える