У меня есть сайт WordPress, который является базовым для сообщений, но я хочу отфильтровать свой пост с помощью ajax.загрузить контент с другой страницы с помощью ajax
Сложная часть заключается в том, что если я хочу отфильтровать, можно сказать, что «случаи» для «фотографии» у меня есть два разных шаблона для этого.
Я могу управлять этим с помощью небольшого php и изменить the_template_part. Но это делает перезагрузку страницы, которую я не хочу делать.
Я пытаюсь выполнить запрос ajax для завершения функции фильтра.
Мои .js
$('a[rel="filter"]').click(function() {
var filter = $(this).attr('id');
$('.checked').removeClass('checked');
$(this).parent().addClass('checked');
$.ajax({
url: '/wp-admin/admin-ajax.php',
data: window.location = '#?filter=' + filter,
success: function() {
$('#content').children().fadeOut(549);
$('#content').html(data).fadeIn(549);
}
});
console.log('Filter ' + $(this).attr('id') + ' clicked');
});
И это PHP изменить template_part в моем index.php
$type = ($_GET['filter'] == '') ? 'projects' : $_GET['filter'];
<?php
get_template_part($type);
?>
Могу ли я achive это или мне нужно думать над этим?
Это просто возвращает фактический адрес в виде простого текста
$('a[rel="filter"]').click(function() {
var filter = $(this).attr('href');
$('.checked').removeClass('checked');
$(this).parent().addClass('checked');
$.ajax({
url: 'wp-admin/admin-ajax.php',
//url: 'url' + filter,
data: {
filter: filter
},
success: function(html) {
$('#content').children().fadeOut(549);
$('#content').html(filter).fadeIn(549);
console.log(filter);
console.log("Success");
},
error: function() {
console.log('No can do')
}
});
console.log('Filter ' + filter + ' clicked');
return false;
});
Если у меня есть 3 страницы с разными querys и шаблоны Wich представляют (Case, фотографии и движения), которым на главной странице я хочу сделать фильтрованию. Im работает на сайте одной страницы.
Надеюсь, это может помочь.
Что-то определенно выглядит немного странным в вашей строке 'data: window.location = '#? Filter =' + filter'. Прежде всего, это данные, которые вы отправляете, что означает всю строку. Во-вторых, что там делает «=»? Вы хотите заменить его 'data: {page: 'blah', filter: filter}'. В-третьих, похоже, что вы не предоставили переменную «данные» в своем обратном вызове. 'success: function (data) {' будет правильным. – h2ooooooo
Я должен добавить, что основная причина, по которой перезагружается ваша страница, вероятно, связана с ошибкой javascript - попробуйте проверить вашу консоль javascript на наличие ошибок. – h2ooooooo
Хмм ... Пробовал это и, к сожалению, не работает – Jonas