私が達成しようとしているのは、サイドバーにあるチェックボックスの選択に基づいてユーザーが投稿をフィルタリングできるようにすることです。
私はプロジェクトと呼ばれるカスタム投稿タイプと、クライアントや専門知識などのいくつかの分類法を作成しました。私は this を見つけました。これは私のページがAJAXで見えるようにするためのものです。しかし、そこにはいくつか欠けているコードがあると思います。とにかく、私は問題なくすべての分類法をチェックボックスで表示することに成功しました。
<!-- Show clients taxonomies in a checkbox -->
<?php foreach( $myClient as $a ) { ?>
<div id="cat_id">
<input class="client_filter" name="<?php echo $a->term_id; ?>" type="checkbox"><?php echo " ".$a->cat_name; ?>
</div>
<?php } ?>
<!-- show expertises taxonomies in a checkbox -->
<?php foreach( $expertStyles as $b ) { ?>
<div>
<input class="expertise_filter" name="<?php echo $b->term_id; ?>" type="checkbox"><?php echo " ".$b->cat_name; ?>
</div>
<?php } ?>
私のscript.js
には、以下のコードがあります。
jQuery(document).ready(function($) {
/* This function will be called on click event */
var optionsChecked = function() {
/* initialize all the variables */
jQuery('.filter-result-form').html("");
var clients = [];
var expertises = [];
var term_id = jQuery('#cat_id').text();
/* loop and Push any checked checkboxes into empty array */
jQuery(".client_filter input:checked").each(function() {
var client_id = jQuery(this).attr('name');
clients.Push(client_id);
});
jQuery(".expertise_filter input:checked").each(function() {
var expertise_id = jQuery(this).attr('name');
expertises.Push(expertise_id);
});
/* collect all the data */
var myData = {
'filter':1,
'term_id': term_id,
'client': clients,
'expertise': expertises
}
/* Ajax url */
var url = "/mysite/ajax";
jQuery.post( url, myData, function( myData ){
jQuery('.filter-result-form').append( myData );
});
}
$( "input[type='checkbox']" ).on("click", optionsChecked);
});
このコードを実行すると、フィルタ結果フォームに何も表示されません。私はまだjQueryとAJAXについて学んでいることを認めなければなりません。
プラグインでAJAXを使うことについてのWordpress チュートリアル を読んでください(あなたがAJAXを使う必要があるなら基本的にあなたのテーマにプラグインを追加しています) )あなたが先に進む前に直さなければならない2つのことがすぐにわかります。グローバル変数ajaxurl
についてのチュートリアルの内容に注意してください。また、AJAXリクエストを処理するためのphp関数を設定していること、およびデータのaction
フィールドにその関数を指定していることも確認してください。電話番号なしで電話をかけているようなものです。システムは、処理のためにAJAX要求をどこに送信するかを知りません。
私はチュートリアルで示唆されていることに取り組むつもりですが、私はそれら二つのことが今のところ大きなものであると思います。