Если не использовать плагины, то +1 к ответу
id_baton4eg, но с поправкой: вместо get_posts() лучше WP_Query - больше свободы и контроля.
А вообще, если уж слать ajax'ом, то есть REST API. Пилим свой REST контроллер, и получаем на выходе json - быстрее, удобнее для javascript на фронте.
Но, есть один важный нюанс - такие запросы будут нормально грузить бекенд. Поэтому, для таких задач существует такая штука как Elastic Search (и аналоги). Для него же есть и WP-плагин ElasticPress. Скорость такой связки - космос по сравнению со стандартным REST API даже. Ну и гибкость.