我試圖創建一個自定義MultiBlog搜索的WordPress,在那裏你可以搜索特定的詞,標籤,作者,類別,日期範圍和註釋中使用Ajax的事先鍵入的內容。ParseError在WordPress多站點
您可以在每個博客搜索,只需選擇博客,或者只是一個。結果很好,但我遇到了一些TypeHead自動完成的問題。
對於標籤,類別和作者只有我通過Ajax使用TypeHead。
我敢肯定,我是從HTML獲取所有值,所以這裏是我JS:
var form = $('#multiselect-search-form');
$('#categories').typeahead({
source: function(query, process) {
$.ajax({
url: BaseURL + 'wp-content/plugins/multiblogselect/categories-search.php',
type: 'POST',
data: form.serialize(),
dataType: 'JSON',
async: true,
success: function(data) {
categories = [];
map = {};
$.each(data, function (i, categorie) {
map[categorie.name] = categorie;
categories.push(categorie.name);
});
process(categories);
console.log(categories);
},
error: function(req, err){ console.log('Ajax error ' + err); }
});
}
});
,當我在一個博客只是看(什麼的,只是一個選擇的)其實它工作正常。但是,當我試圖選擇大於1名的博客,我越來越parsererror。
因此,這裏是我的PHP:
獲取價值是好的,我送他們到JS。 $ multiblogselect返回數組中的博客的ID。
if (is_array($multiblogsselect)){
$multiselect = count($multiblogsselect);
if ($multiselect === 1) {
foreach ($multiblogsselect as $key => $value){
if ($value != 1 && $value > 0) {
$tablePrefix = $wpdb->base_prefix.$value.'_';
} else{
$tablePrefix = $wpdb->base_prefix;
}
$resultCategories = getPostCategories($tablePrefix, $categories);
echo json_encode(array_values($resultCategories));
}
} else {
$resultCategories = array();
for ($i=1; $i<=$multiselect; $i++) {
if ($i != 1 && $i > 0) {
$tablePrefix = $wpdb->base_prefix.$i.'_';
} else{
$tablePrefix = $wpdb->base_prefix;
}
$resultCategories = array_merge_recursive($resultCategories, getPostCategories($tablePrefix, $categories));
}
echo json_encode(array_values($resultCategories));
}
}
這樣我就可以使用任何前綴用於在數據庫中搜索,在一個循環
function getPostCategories($tablePrefix, $categories){
//object_id in term_relationships is post_id
global $wpdb;
$queryCategories = "SELECT name
FROM ".$tablePrefix."term_relationships
JOIN ".$tablePrefix."term_taxonomy
ON ".$tablePrefix."term_relationships.term_taxonomy_id = ".$tablePrefix."term_taxonomy.term_taxonomy_id
JOIN ".$tablePrefix."terms
ON ".$tablePrefix."terms.term_id = ".$tablePrefix."term_taxonomy.term_id
WHERE ".$tablePrefix."terms.name LIKE '%".$categories."%'
AND ".$tablePrefix."term_taxonomy.taxonomy = 'category'
";
$resultCategories = $wpdb->get_results($queryCategories);
return $resultCategories;
}
所以,它工作正常,當我搜索在短短的一個博客,但如果我選擇多博客(獲取ParseError)。
有什麼想法?
編輯:我已經添加了「for」循環,所以我沒有parseerror了。但是,多個博客搜索中返回的數組是空的。 array_merge in cause?