WordPress как на ладони

Ajax поиск в админке вордпресс

Делюсь найденным в сети кодом, пользуйтесь кому нужно.

  • Создать файл с содержимым ниже, например в папке /js/admin-ajax-search.js:
  • Подключить файл в админку вп прописав в файле funtions.php:
add_action( 'admin_enqueue_scripts', 'ant_admin_ajax_search' );

function ant_admin_ajax_search(){
	wp_enqueue_script( 'admin_ajax_search', get_stylesheet_directory_uri() . '/js/admin-ajax-search.js');
}

Начните писать что то в поиске на странице постов или страниц в админке, выдача динамически изменится.

jQuery(document).ready(function($) {

	function ajax_admin_search_update_search() {
		s = a.val().replace(' ', '+');
		console.log(s);
		var url = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
		console.log(url);
		for (var i = 0; i < url.length; i++) {
			if (/(^s$)|(\bs=.*\b)|(\bs=)/g.test(url[i]) === true || /http.*/g.test(url[i]) === true) y = i;
		}

		if (typeof y === 'undefined'){
			url.unshift('s='+s)
		}else{
			url[y] = 's='+s;
		}

		url = url.join('&');

		url = window.location.pathname+'?'+url;

		$.get(url, {}, function(data) {
			var r = $('<div />').html(data);
			var table = r.find(z);
			var tablenav_top = r.find(tnt);
			var tablenav_bottom = r.find(tnb);
			$(z).html(table);
			$(tnt).html(tablenav_top);
			$(tnb).html(tablenav_bottom);
		},'html');

		$(document).ajaxStop(function() {
			if(s.length) {
				history.pushState({}, "after search", url);
			} else {
				history.pushState({}, "empty search", url);
			}
		});

	}

	$(function() {
		a = $('input[type="search"]');
		t = a.closest('form').find('table');
		if(!t.length) t = a.closest('div').find('table');
		if(!t.length) return;
		z = '.'+t.attr('class').replace(/\s/g, '.');
		tn = '.top .displaying-num';
		bn = '.bottom .displaying-num';
		tpl = '.top span.pagination-links';
		bpl = '.bottom span.pagination-links';
		tnt = '.tablenav.top';
		tnb = '.tablenav.bottom';
		var timer;
		a.on('keyup', function(event) {
			if (timer) clearTimeout(timer);
			timer = setTimeout(ajax_admin_search_update_search, 300);
		});
	});
});
Заметки к вопросу:
Kama 5.5 лет назад

Хорошее решение, только после запроса ссылки для быстрого редактирования записи уже не работают, также групповая правка записей не пашет, не всегда это удобно... А в остальном спасибо за код!

3
anseme
5.5 лет назад 455
  • 0
    kolshix779 paxtoy.com

    полезная штука, у меня на сайте плагин стоит
    simpe-exlude
    он лишние $_GET отправляет в url поиска , в следствии чего идет превышение URL и ошибка

    этот кодик проблемку решил!

    Комментировать
  • 0

    Полезно, но я столкнулся с такой проблемой, в wordpress когда страниц или записей очень много они встают под пагинацию (знаю, что можно в настройках отображения поменять количество элементов на одной странице), и поиск работает только на активной странице, а не по всем записям как хотелось бы )

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация