Example Ajax loading posts from the headings in Wordpress - a practical lesson, a guide to Ajax

  Рет қаралды 14,415

wp-plus

wp-plus

7 жыл бұрын

In this lesson, we will practice making ajax requests when you click on the links of the widget or menu in the front-end to get the entries from the relevant section of Wordpress.
Thank you Ruslan Romanenko for the idea, which he kindly shared in the comments.
Useful material:
goo.gl/HziCtT -Code from video tutorials
goo.gl/Xia7pN -article " Ajax in WordPress»
goo.gl/TCwswA -all video tutorials about Ajax in WordPress
Support the project:
PayPal paypal.me/campusboy

Пікірлер: 115
@web-dev-pro
@web-dev-pro 2 жыл бұрын
За что люблю твои видео - все всегда четко, выверено и без воды. Спасибо
@wpplus
@wpplus 2 жыл бұрын
Спасибо за столь тёплый отзыв!
@ostapyurevich9690
@ostapyurevich9690 3 жыл бұрын
Отличные уроки, спасибо.
@trondigital7439
@trondigital7439 7 жыл бұрын
Круто! Не думал, что за 20 минут столько полезного можно узнать :)
@wpplus
@wpplus 7 жыл бұрын
Спасибо! Рад, что смог донести информацию так, что она попала в разряд "полезной" :-)
@oleksiirohochyi1709
@oleksiirohochyi1709 5 жыл бұрын
Автор, спасибо за качественный контент. По качествую этого видео, не глядя подписываюсь.
@3dzbot
@3dzbot 2 жыл бұрын
Шедевральное описание!!!!
@user-hz5kh5ch8n
@user-hz5kh5ch8n 5 жыл бұрын
Спасибо, познавательные у Вас видео, так держать))
@mishajaglovskiy6418
@mishajaglovskiy6418 5 жыл бұрын
Согласен. Уроки очень качественные и подходят для всех. Спасибо!
@elisseiidybsky292
@elisseiidybsky292 6 жыл бұрын
Ваши уроки - это находка! Спасибо за плейлист:)
@wpplus
@wpplus 6 жыл бұрын
А вам спасибо за отзыв :-)
@user-im6df7uz2f
@user-im6df7uz2f 7 жыл бұрын
Большое спасибо! Очень полезно!
@wpplus
@wpplus 7 жыл бұрын
Пожалуйста. Очень рад такому отзыву!
@turalinov
@turalinov 4 жыл бұрын
Спасибо, благодаря сделал вывод страниц посредством Ajax
@maksymdavydchuk
@maksymdavydchuk 7 жыл бұрын
Спасибо за видео, было интересно!
@wpplus
@wpplus 7 жыл бұрын
Спасибо за фидбэк))
@YevhenZhuchenko
@YevhenZhuchenko 7 жыл бұрын
Снимаю шляпу, сэр :-) Гениально!
@wpplus
@wpplus 7 жыл бұрын
О, спасибо Жень!)
@denyssamsonov9369
@denyssamsonov9369 4 жыл бұрын
Прям круто!
@antoxa574
@antoxa574 3 жыл бұрын
Я уж думал что ты чего-то не покажешь. А тут все подробно - прям как надо все сделано. Спасибо! p.s. Ещё бы видео как можно выводить комментарии в реальном времени( типа как добавить коммент через отправку ajax понятно, а как сделать так, чтобы можно было выводить комментарии других пользователей в реальном времени ), было бы вообще шикарно
@wpplus
@wpplus 3 жыл бұрын
Спасибо за отзыв! Выводить комментарий в режиме онлайн может сильно сказаться на нагрузке, создаваемой сайтом, особенно если он посещаемый. Тут нужен крайне продуманный подход и много работы - не формат ютуба. Как правило для этого используют сторонние сервисы, чтобы эту нагрузку переложить на них, ну или пишут микросервис. А в целом точкой отсчёта может быть механизм Heartbeat API, к примеру я такой пример когда-то делал wp-kama.ru/id_9759/heartbeat-api.html#slezhenie-za-kommentariyami-v-adminke
@antoxa574
@antoxa574 3 жыл бұрын
@@wpplus Да я хотел на heartbeat сделать, но он работает только в админке. В итоге получилось с плагином wp-recall, там в самом плагине есть похожая система, называется rcl_beat, но на счет нагрузки ещё не смотрел. Да и из за задержки в 10 секунд заморачивался с выводом, чтобы все комментарии выводились в своем порядке и при этом не конфликтовали с комментариями которые были отправлены по ajax... Чуть позже попробую подключить comet сервер к wordpress и на нем такую-же тему сделать. Ещё бы кстати интересно было посмотреть на счет того, как можно оптимизированней писать код на js или php( типа какие функции занимают больше времени, как лучше конкатенировать строки и т.д. )
@user-ri8ow3qh7l
@user-ri8ow3qh7l 5 жыл бұрын
Как же круто!!! У меня все получилось, конечно, с плагиатом)) Вам памятник еще при жизни нужно поставить и рядом логотип wordpress))))
@wpplus
@wpplus 5 жыл бұрын
Я за вас искренне рад!) Значит не зря работа проделана, как моя, так и ваша. А вместо памятника можно просто посоветовать другим мои работы :-) это самая большая награда
@eugenevandar7952
@eugenevandar7952 6 жыл бұрын
лайк, подписка и коммент, спасибо
@wpplus
@wpplus 6 жыл бұрын
Вам спасибо!
@eugenevandar7952
@eugenevandar7952 6 жыл бұрын
wp-plus это вам спасибо за доступный материал
@animeamvshorts6316
@animeamvshorts6316 3 жыл бұрын
Подскажите, как можно сделать обработку нажатия кнопки. Хочу при переключении кнопки radio менять стили в админке. Не могу врубиться, как это реализовать? Это тоже через POST запрос делать нужно?
@user-tn6qv8vn7s
@user-tn6qv8vn7s 5 жыл бұрын
Добрый день. А как сделать тоже самое вот, но только при клике на сами записи? Т.е. в меню ссылки на записи, кликаем и меняется контент этой записи.
@Denis-xo9jx
@Denis-xo9jx 3 жыл бұрын
Добрый день!, а как на такой функционал смотрят поисковики? я имею ввиду активность пользователей на сайте. получается код счетчика надо ставить в шаблон вывода главной части сайта. не в хеадер и не в футер, а в часть, которая будет подгружаться. верно? вообще - корректно ли работает метрика при организации аякс загрузки страниц на сайте? спасио
@user-sy1pc4bc3u
@user-sy1pc4bc3u 5 жыл бұрын
Огромное спасибо Дмитрий! Отличный урок!!! Подскажите, пожалуйста, этот пример можно как-то использовать для постраничной пагинации, в частности для пагинации товаров в woocommere?
@nickiminaj0882
@nickiminaj0882 4 жыл бұрын
Эм конечно да.
@radistelectric6216
@radistelectric6216 6 жыл бұрын
Привет! Есть к этой теме ещё один вопрос. Список постов и одиночные посты выводятся в заданном окне. История назад и вперёд работает. Но если нажать F5 или любым способом перезагрузить страницу, то автоматом пытаются вывестись category.php или single.php (в общем, согласно иерархии перебираются все страницы до index.php). Я создал эти страницы просто так почти без содержимого и стилей. Что мне делать? Блокировать вообще перезагрузку страницы или полноценно оформить category.php или single.php, чтобы в случае перезагрузки всей страницы получить тот же результат с выводом категорий или одиночного поста?
@zipponvr7043
@zipponvr7043 4 жыл бұрын
там в файле tpl-cat.php в 28 строке нужно еще get_category_link( $cat->term_id ) заменить на substr( get_category_link( $cat->term_id ), 0, -1), т.к. в ссылках пагинации выводится 2 слеша, на работоспособность не влияет, но как-то не по фен-шую )
@walking_sochi
@walking_sochi 6 жыл бұрын
Спасибо за интересный видео урок. Не могли бы вы сделать подобный видеоролик про woocommerce а точнее как добавить товары в корзину посредством ajax. Спасибо )
@wpplus
@wpplus 6 жыл бұрын
Спасибо за отзыв! Насчёт woocommerce - у меня нет достаточного опыта, чтобы публично учить людей работать с ним.
@stylenova1
@stylenova1 4 жыл бұрын
Здравствуйте! Пытаюсь все тоже самое сделать для произвольных записей и рубрик, но у меня в таком варианте get_category_by_slug возвращает false, хотя slug есть. Пробовал get_term_by тогда ошибка 500. Уже не знаю что читать, помогите пожалуйста.
@user-zk2ls7io7q
@user-zk2ls7io7q Жыл бұрын
Ничего не понял. Раньше не знал за встроеный аякс в вордпресе. И делал дополнительно шаблон странички, создавал страничку в вордпрес-админке, а в файле что ее выводит - писал пхп код для запроса в БД. Даный код получал инфо с файла my_custom_file.js и естественно делал запрос в БД. А потом отдавал ответ. И все работало) Как я понял я просто сделал свой велосипед )) Но. Сейчас пришло время сложного запроса ( с сортировкой по созданой таксономии и по тегах, и по категориях). Вот, не знаю как можно получать из стандартного wp_query инфо не только та что будет в query->posts, а дополнительную (надо вывести свою таксономию, надо вывести tag, и прикрепленную картинку к посту через thumbnail. В общем вся та инфа, которая не отобразилась в дефолтном запросе.... вот задачка (
@sia4281
@sia4281 3 жыл бұрын
Было бы здорово если в описании будет ссылка на весь плейлист, чтобы не выискивать его на канале. Упс, перепутал, не в то видео написал )
@dembitsky_youtube
@dembitsky_youtube 2 жыл бұрын
Помогите решить задачу данные для запроса получаю из цыкла wp а именно отслеживаю ссылку на следующий и прыдедущий пост get_next_post_link() все работает только один раз после того как контейнер обновляется с новым постом ссылки возвращаются в дефолтное состояние код из видео суть такова что следим за ссылками внутри контейнера который обновляется ? Признателен за помощь и ждем нового контента от автора канала
@evgeniyprowork
@evgeniyprowork 5 ай бұрын
при переключении категорий все работает, но при переходах по пунктам меню пишет "Рубрика не найдена", пока еще не понял как это побороть
@user-ly8uc8sw6t
@user-ly8uc8sw6t Жыл бұрын
Доброго времени суток. Очень полезное видео. Но я столкнулся с такой проблемой. С кастомными пост тайпами и таксономиями отказывается работать, возвращает пустоту. аякс отрабатывает, но возвращает 0, пустую верстку. Может кто то сталкивался с такой проблемой? Пока не совсем понимаю как это можно обыграть. С аяксом впервые работаю.
@Moonlight-kh9pr
@Moonlight-kh9pr 10 ай бұрын
Есть возможность урокив несколько приобрести?
@melikovfazli7052
@melikovfazli7052 4 жыл бұрын
Здравствуйте, у меня slug меняется, но, увы страницу(пост) не находит, вернее class, который я привязал( В чем может быть проблема,?
@user-ic3tp3kw2d
@user-ic3tp3kw2d 6 жыл бұрын
Uncaught ReferenceError: jquery is not defined, jquery подключен сто процентно. и перед всеми другими скриптами, из за чего так может быть? Менял версии jquery ничего не менялось
@wpplus
@wpplus 6 жыл бұрын
Судя по ошибке все буквы в "jquery" написаны в нижнем регистре, а надо писать "jQuery" - Q большая. JavaScript чувствителен к регистру: jquery и jQuery - это две разные функции для него.
@DanyloMinakov
@DanyloMinakov 4 жыл бұрын
Добрый вечер, пожалуйста помогите!!!!!!!!!!!!! Как мне когда шаблон страницы == "catalog" изменить разметку вывода постов. То есть на главной у меня выводится эти посты с одной разметкой, а в шаблоне страницы "catalog" должна быть другая. Пишу is_page_template, только ни к чему, так как эта разметка хранится в functions.php, а он не может определить шаблон. Пожалуйста, я новичок, а у меня проект на фрилансе горит. Буду огромноооо благодарен, прям очееееень!
@pieceofcake3626
@pieceofcake3626 4 жыл бұрын
Опишу немного свою задачу, авось кто подскажет. 1) При заполнении и отправке формы, генерируется случайный "промокод", он записыается в БД и сохраняется. 2) Есть поле для ввода промокода при расчете услуг. И тут ajax. Нужно сделать обращение к базе с промокодами без перезагрузки страницы. Если введеный промокод есть в базе, от суммы услуг отнимается скидка. Дополнительные условия: Промокод нельзя использовать повторно. Вот такая вот задачка. Основная проблема это как генерировать случайный промокод при отправке формы и записывать его в БД, как проверять его через ajax на странице подсчета услуг и как сделать что бы нельзя было повторно использовать. Остальное я на js как нибудь могу костыли написать, а в PHP плохо разбираюсь.
@aleksandrmakedonsky1295
@aleksandrmakedonsky1295 5 жыл бұрын
пагинация работает с перезагрузкой страницы? я правильно понимаю? на видео не показывалось наглядно как она работает в деле, а у меня страница перезагружаеться при переходе между пейджами.
@wpplus
@wpplus 5 жыл бұрын
Да, пагинация в видео не прорабатывалась.
@user-ri8ow3qh7l
@user-ri8ow3qh7l 5 жыл бұрын
Спасибо. Только я не понял, в у вас файле tpl-cat.php присутствует переменная $cat, которой вы заменяете в адресной строке браузера. Как она попала в этот файл? У меня в шторме подсвечивается как неопределенная переменная
@wpplus
@wpplus 5 жыл бұрын
В файле ajax-cat.php, куда идёт ajax запрос срабатывает функция ajax_show_posts_in_cat() - это обработчик запроса. В нем мы пытаемся определить, данные по какой рубрике нам нужны. Вот там и формируется $cat. Если мы её смогли получить, то подключаем файл tpl-cat.php через require, и, естественно, в нём вполне можем обращаться к $cat - она доступна нам, так как определена выше в рамках нашей функции.
@maksymdavydchuk
@maksymdavydchuk 6 жыл бұрын
Здравствуйте Дмитрий, подскажите пожалуйста как правильно вернуть результат ajax запроса в котором будет несколько переменных с данными (например переменная в которой будут посты, количество авторов и т.д). В примере что у вас мы сразу выводим результат (tpl-cat.php)
@wpplus
@wpplus 6 жыл бұрын
Привет, Максим! Отличный вопрос на самом деле. Но я советую сначала все уроки из плейлиста по Ajax посмотреть (они же ведь короткие), а потом уже делать более менее сложные вещи. Но если прям хочется всё пропустить и сделать только это (типичное желание новичков), то посмотрите урок, где я делал ajax виджет в админке kzbin.info/www/bejne/fmjLaZRoj7yJgac . Там я использовал функции wp_send_json_success() и wp_send_json_error(), которые помогали мне в этом. Это обёртки функции wp_send_json(), которую также можно использовать при необходимости. Успехов в решении задачи!
@maksymdavydchuk
@maksymdavydchuk 6 жыл бұрын
Спасибо за быстрый ответ!:)
@butcherfirewaters
@butcherfirewaters 6 жыл бұрын
Добрый день! Просто потрясающее видео, только можете мне пожалуйста подсказать, как провернуть такую вещь, только при нажатии на метки(теги)... Как я уже когда-то писал - лучшие уроки на ютубе по WP!
@wpplus
@wpplus 6 жыл бұрын
Здравствуйте, Алексей. Спасибо за отзыв. Насчёт вопроса - это видео и есть же основная подсказка, как подобное делать, каждый шаг объяснён что и для чего. Какую именно помощь Вы от меня ждёте?
@butcherfirewaters
@butcherfirewaters 6 жыл бұрын
Спасибо, понял как сделать и для меток.. а вот можно ли с помощью этого трюка сначала подгружать посты по рубрикам, а потом при нажатии на метки, уже погружать оставшиеся посты? это возможно?
@chloenewman758
@chloenewman758 5 жыл бұрын
Здравствуйте! К сожалению у меня выводится только "Рубрика не найдена". Подскажите пожалуйста, что делать в этом случае?
@wpplus
@wpplus 5 жыл бұрын
Здравствуйте. Проверить, какие данные приходят в функцию-обработчик.
@ekaterinaakhmadulina5486
@ekaterinaakhmadulina5486 3 жыл бұрын
Спасибо большое за лекцию. Скажите, при использовании WooCommerce будут ли какие-то особенности кода? Выводится сообщение 'Рубрика не найдена', и как это починить, пока не знаю.
@wpplus
@wpplus 3 жыл бұрын
Здравствуйте. Потому что WooCommerce использует не рубрики WordPress (taxonomy=category), а свои собственные (taxonomy=product_cat), поэтому функция в примере get_category_by_slug( $slug ) не подходит для решения задачи, потому что это тоже самое, что get_term_by( 'slug', $slug, 'category' ). Нужно get_category_by_slug( $slug ) заменить на get_term_by( 'slug', $slug, 'product_cat' ).
@ekaterinaakhmadulina5486
@ekaterinaakhmadulina5486 3 жыл бұрын
@@wpplus Большое вам спасибо, за терпеливый ответ. Но при замене на get_term_by, меня выбрасывает в такую ошибку: jquery.js?ver=5.5.3:10099 POST wp-ira.loc/wp-admin/admin-ajax.php 500 (Internal Server Error) Где накосячила? Простите за абсолютно некомпетентные вопросы, это мой второй сайт, и я что-то забрела туда, пока где еще рановато гулять.
@wpplus
@wpplus 3 жыл бұрын
Я правильно понимаю, что знаниями php/js Вы не владеете, но почему-то решили пойти этим путём? Может быть тогда попробовать решить задачу плагином? Например таким ru.wordpress.org/plugins/load-more-products-for-woocommerce/ или аналогичным. Отвечаю так, потому что программист, если у него возникает ошибка в коде, бежит смотреть логи, чтобы понять где всё-таки ошибка. Ошибка 500 - это ошибка именно в коде как правило, вариантов какая именно ошибка в коде - миллион, сложно предположить какая именно в вашем случае. Поэтому и нужны логи - ошибки, указанные в них, однозначно говорят какая ошибка и в какой строке кода. Если хотите развиваться дальше как программист, то советую почитать (и даже посмотреть), как пользоваться простым дебагом в WordPress wp-kama.ru/id_7791/debag-v-wordpress-wp_debug.html . Так же, можете мне написать в Скайп dogsheart или дискорд campusboy#0510. Это рекомендуемые способы связи со мной, так как позволяют созвониться и показать рабочий экран компьютера, объяснить "на живую", что к чему. Резервный способ телеграмм @campusboy
@ekaterinaakhmadulina5486
@ekaterinaakhmadulina5486 3 жыл бұрын
@@wpplus Спасибо большое за дебаг! Решения пока нет, но работа определенно идет! И спасибо большое за ответ! И отдельное спасибо за контакты. Постучусь в случае полного отчаяния. И да, я пока совсем не программист, с js и тем более php дела глухи, но разведка идет боем!
@vladimirmyakota6615
@vladimirmyakota6615 6 жыл бұрын
Действительно лучшее ,что я вообще смотрел на ютубе Наткнулся на него, собственно, когда искал информацию о том, как передать данные из формы, в плагин через ajax запрос. Узнал много нового, но с вопросом толком не могу разобраться, помогите) У меня есть форма, которую пользователь должен заполнить, и она в свою очередь должна отправиться в базу данных, по нажатию кнопки отправить(ничего нового). Сделал плагин, который записывает данные в таблицу, отправить в него post нужно. Как это можно реализовать? Есть ссылки на ресурсы, которые могут с этим помочь? Весь интернет облазил, толкового ничего не нашел
@wpplus
@wpplus 6 жыл бұрын
Здравствуйте. Спасибо за отзыв! Но ведь все уроки по AJAX, что у меня есть как раз этому и учат. Вы с первого видео поглядели? Ссылка на плейлист в описании к видео. Речь о WordPress? На каком именно моменте застопорились?
@vladimirmyakota6615
@vladimirmyakota6615 6 жыл бұрын
Застопорился на моменте, когда нужно переменную data заполнять данными, которые я хочу отправить из формы. В Вашем уроке name указываем сами, в коде. Хотелось бы сделать что-то вроде переменной send_post в которую будет ложиться информация из post запроса, и эту информацию в файле test-ajax.php можно будет использовать, как $_POST['name']
@elias_koch
@elias_koch 6 жыл бұрын
Добрый день, скажите пожалуйста как подобное провернуть подобное через $query = new WP_Query( $args ); и когда я подключаю шаблон и работаю с постами в шаблоне $query уже не видит
@wpplus
@wpplus 6 жыл бұрын
Здравствуйте. Судя по всему база у вас слабовата. Почитайте - goo.gl/U2bpyC , отличая статья о циклах. А помочь на основе того, что вы рассказали я даже не представляю как.
@elias_koch
@elias_koch 6 жыл бұрын
wp-plus спасибо, да действительно слабовата, как раз только начанаю нормально изучать
@evgeniykolegov5012
@evgeniykolegov5012 3 жыл бұрын
Уважаемый автор, подскажите а где файлы с кодом с этого урока? По ссылке файлы только с прошлых уроков
@wpplus
@wpplus 3 жыл бұрын
Здравствуйте. Да всё там же по ссылке, вот точный каталог github.com/campusboy87/lessons-ajax-wordpress/tree/master/examples/example%201
@evgeniykolegov5012
@evgeniykolegov5012 3 жыл бұрын
@@wpplus спасибо! пардон за недопонимание)
@eisenmann17
@eisenmann17 4 жыл бұрын
Все подредактировал под свою тему, у меня переключатели не в виджете, а как кнопки в div объекте на главной странице. Но есть 1 проблема - в $link не попадают ссылки (проверял через echo ($link); ). Если непосредственно в $slug указать ссылку или название категории, то все работает как должно. Всю голову сломал что не так и как исправить или реализовать через другой метод. Буду очень благодарен, если дадите совет.
@wpplus
@wpplus 4 жыл бұрын
Значит дело в JS, в переменную linkCat не попадает ссылка на рубрику. Большего без вашего html + js не сказать. При клике по чему-либо должен "прочитаться" url на рубрику и уйти в функцию ajaxCat().
@eisenmann17
@eisenmann17 4 жыл бұрын
@@wpplus Спасибо за подсказку, пошел от нее и оказалось что после указания контейнера с ссылками потерял " а". Теперь все как положено работает :)
@MrVellt
@MrVellt 7 жыл бұрын
То чувство, когда хейтер ГВП подписывается на канал по ГВП...
@555522ish
@555522ish 6 жыл бұрын
Ты пагинацию не проверил, там косяк. Вместо echo str_replace( admin_url( 'admin-ajax.php/' ), get_category_link( $cat->term_id ), $pagination ); должно быть echo str_replace( admin_url( 'admin-ajax.php' ), get_category_link( $cat->term_id ), $pagination );
@Cepesh16
@Cepesh16 5 жыл бұрын
Сомневаюсь что это ошибка, только что протестировал оба варианта. При вашем способе в ссылке добавляется лишний слэш, вот пример как у меня получилось когда попробал ваш код: localhost/category/all-position//page/10/ "//page/10/" - вначале добавился лишний слэш Если использовать вариант из видео тогда этого слэша не будет
@user-mc2wg1oc8v
@user-mc2wg1oc8v 6 жыл бұрын
Добрый день. почему вызывается history.pushState(), а не history.replaceState() ?
@wpplus
@wpplus 6 жыл бұрын
Здравствуйте. Потому что replaceState() заменит элемент в истории другим, а нам надо добавлять, чтобы потом кнопки назад/вперед работали корректно.
@radistelectric6216
@radistelectric6216 6 жыл бұрын
Добрый день! Плейлист - просто огонь! Всё применил в своей собственной теме: выводится и список постов, и одиночные посты в том же окне. Но вот пагинация не работает. При клике на рубрику, где много постов изначально выводится постов столько, сколько установлено в ограничении, и, соответственно, появляется сама пагинация. replace успешно отрабатывает и ссылка на пагинации имеет вид типа mysite/category/topic111/page/2/ Но когда функция ajaxCat отправляет запрос, то ей возвращается "Рубрика не найдена". От чего отталкиваться при решении проблемы?
@wpplus
@wpplus 6 жыл бұрын
Приветствую! Насчёт урока - это не полноценное решение, а концепт, от чего можно оттолкнуться. У меня как будет время, я обязательно рассмотрю все Ваши вопросы и, возможно, сделаю по ним дополнительный урок (но отвечу быстрее, чем сниму видео).
@radistelectric6216
@radistelectric6216 6 жыл бұрын
Заранее спасибо! Я почитал статью wp-kama.ru/function/query_posts и обратил внимание, что query_posts() при создании вторичных запросов может рушить структуру страниц и нарушать пагинацию. wp_reset_query() мне не помогла. Возможно, всё исправится, когда начну использовать get_posts(). Займусь в ожидании ответа исследованиями.
@radistelectric6216
@radistelectric6216 6 жыл бұрын
Перепробовал кучу вариантов, в том числе wp-kama.ru/question/paginatsiya-v-wp_query Всегда отлично выводятся посты и формируются ссылки на page/2, но после перехода по этим ссылкам не выводятся посты. Если в аргументах указать 'paged' => get_query_var('paged') ?: любой номер страницы, то посты с этой страницы выводятся, но на предыдущей или следующей пусто. У меня даже появилась мысль через регулярные выражения проверять ссылку, а потом в 'paged' => get_query_var('paged') ?: добавлять номер страницы, которую хочу вывести. Но это смахивает на костыль.
@radistelectric6216
@radistelectric6216 6 жыл бұрын
Я решил проблему! Теперь пагинация работает! Вся проблема была в функции wp_basename(). Для страниц с пагинацией, где присутствуют page/2/ , page/3/ и т.д. эта функция возвращает не Слаг рубрики, а 2, 3 и т.д. соответственно. Пришлось воспользоваться регулярными выражениями, чтобы очистить ссылку от page/ для получения Слага, а также выдернуть из этой ссылки номер страницы, чтобы добавить её в аргументы при выводе списка постов соответствующей страницы.
@radistelectric6216
@radistelectric6216 6 жыл бұрын
//Динамический вывод списка постов в категории add_action( 'wp_ajax_get_cat', 'ajax_show_posts_in_cat' ); add_action( 'wp_ajax_nopriv_get_cat', 'ajax_show_posts_in_cat' ); function ajax_show_posts_in_cat() { $link = ! empty( $_POST['link'] ) ? esc_attr( $_POST['link'] ) : false; if (preg_match("/page/", $link)) { $linkShort = substr($link, 0, strpos($link, "/page/")); $slug = $linkShort ? wp_basename( $linkShort ) : false; } else { $slug = $link ? wp_basename( $link ) : false; }; $cat = get_category_by_slug( $slug ); if (preg_match("/page/", $link)) { $pos = strpos($link, "/page/"); $length = strlen($link); $tail = $length - $pos; $text = substr($link, -1*$tail, -1); $page = preg_replace('/[^0-9]/', '', $text); } else { $page = 1; } if ( ! $cat ) { die( "" . 'Рубрика не найдена' ); } global $wp_query; $wp_query = new WP_Query(array( 'posts_per_page' => get_option( 'posts_per_page' ), 'post_status' => 'publish', 'category_name' => $cat->slug, 'order' => 'ASC', 'orderby' => 'date', 'paged' => $page, )); require plugin_dir_path( __FILE__ ) . 'show-cat.php'; wp_die(); };
@alexpavlov7768
@alexpavlov7768 5 жыл бұрын
Очень полезное видео, но у меня почему то функция вот это строчка выводит пустоту $cat = get_category_by_slug( $slug ); Заменил вывод на этот и заработало: query_posts( array( 'posts_per_page' => get_option( 'posts_per_page' ), 'post_status' => 'publish', 'tax_query' => array( array( 'taxonomy' => 'cat_fabric', 'field' => 'slug', 'terms' => $slug ) ) ) );
@wpplus
@wpplus 5 жыл бұрын
Тогда как Вы получаете значение для переменной $slug в вашем коде?
@wpplus
@wpplus 5 жыл бұрын
А, понятно, get_category_by_slug() работает только с рубриками, а у Вас своя личная таксономия cat_fabric, вот и не сработало. Функция get_category_by_slug() работает на основе get_term_by(), так что можно так get_term_by( 'slug', $slug, 'cat_fabric' ) в моём коде.
@aleksandrmakedonsky1295
@aleksandrmakedonsky1295 5 жыл бұрын
Дай тебе бог здоров*я, Алекс, пол 7-го утра, я нашел твой коммент! спасибо что не поленился, и написал. Подшаманил, работает, не передать словами как у меня бомбило.... жаль, что автор не упомянул, о кастомных типах записей, стандартные пост я сразу сделал, но я все равно очень рад уроку, для меня первый контакт с аджакс можно сказать успешный. Спасибо большое
@user-ie7oj5qj8n
@user-ie7oj5qj8n 5 жыл бұрын
Спасибо, очень крутые уроки, полезные на 100% Подскажите как вывести результат на другой странице? На главной все работает, спасибо ) Создал через Advanced custom field шаблон, создал страницу и подключил его, вывел категории через функцию wp_list_categories() но категории имеют ссылки от домена и так далее ( "wordpress/category/objects/category-2/" а у меня ссылка страницы типа "wordpress/objects.html/" ) после нажатия ясное дело перекидывает на "wordpress/category/objects/category-2/". Спасибо. Еще вопрос по пагинации, у меня при переходе на страницы перезагружается страница, так должно быть или нет? Спасибо. (Не судите строго за возможно глупые вопросы :)
@wpplus
@wpplus 5 жыл бұрын
Спасибо за отзыв, Василий. Пожалуйста, обстоятельно, с подробностями и приведением кода задайте вопрос у нас тут wp-kama.ru/question
@user-ie7oj5qj8n
@user-ie7oj5qj8n 5 жыл бұрын
Спасибо. Разместил wp-kama.ru/question/ajax-posty-iz-kategorij-s-paginatsiej
@eugenevandar7952
@eugenevandar7952 5 жыл бұрын
На 19:00 в 20 строке die(); почему не wp_die(); ??
@wpplus
@wpplus 5 жыл бұрын
Потому что принципиальной разницы нет, можно использовать wp_die(), die() или exit().
@eugenevandar7952
@eugenevandar7952 5 жыл бұрын
@@wpplus спасибо, я уточнил, потому что в предыдущих видео вы говорили, что лучше использовать функцию wp нежели нативную
@wpplus
@wpplus 5 жыл бұрын
@@eugenevandar7952 раньше в документации на этом ставили акцент, я его сделал тоже. Но практика показывает, что используйте что нравится. В целом даже сам wp в ajax использует просто die().
@wpplus
@wpplus 5 жыл бұрын
Я вам немного неверно сказал, WP при AJAX запросах использует wp_die(), так как оно может принимать 2 аргумента. Первый - вывести любую строку на экран, Второй - отдать указанный статус ответа сервера. Это удобно, когда надо остановить работу скрипта и отдать нужный вид ошибки, например 403 или любой другой. Если этого не требует, то die() или exit() за глаза.
@etern1ty85
@etern1ty85 6 жыл бұрын
Привет, Дмитрий! Делаю как вы через плагин - но мне всегда выдает 0. Вот код index.php плагина prntscr.com/h9ub8p запрос такой /wp-admin/admin-ajax.php?action=get_numbers_ajax
@wpplus
@wpplus 6 жыл бұрын
Здравствуйте! Вы же в хуке указываете свой action. То есть, если хук wp_ajax_get_numbers, то action будет get_numbers и соответственно ссылка, в вашем примере, такая: /wp-admin/admin-ajax.php?action=get_numbers должна быть. А вы пытаетесь как будто напрямую вызвать функцию get_numbers_ajax(), но это не верно. Мы вызываем action (без префикса wp_ajax_, он движком добавляется потом автоматически), который уже затем вызовет нужную функцию. Для конечного пользователя название функции, как видите, не известно, в целях безопасности и не только :-)
@etern1ty85
@etern1ty85 6 жыл бұрын
Благодарю за оперативность! Все получилось!
@olenakunina1
@olenakunina1 3 жыл бұрын
урок прекрасный - получилось соорудить подгрузку кастомных постов по клику на категорию из списка, до этого прикрутила подгрузку кастом постов вобще всех категорий по нажатию на кнопку по этой вот инструкции: misha.agency/wordpress/ajax-pagination.html#php_vivod_postov , уже несколько дней пытаюсь их подружить - не получается - естественно отстуствие системных знаний сказывается(( - может подтолкнет кто - как лучше - пытаться подружить эти два запроса или писать лучше новый для подгрузки постов вместо пагинации? там ведь еще нужно будет делать подгрузку для постов которые нашлись по запросу в поле поиска - я в растерянности
@wpplus
@wpplus 3 жыл бұрын
Спасибо за отзыв! Вы взялись за сложную, тем более для новичка, задачу. Я даже не знаю, как вкратце подсказать, если честно. Через JS просто считывайте и запоминайте в коде дополнительные параметры - поисковую фразу и номер страницы пагинации и передавайте их вместе со всем остальным. Других вариантов нет (я во всяком случае о них не знаю).
@olenakunina1
@olenakunina1 3 жыл бұрын
@@wpplus это получилось - поисковую фразу не запоминала - просто библиотеку постов переносила и страницу - нагуглила у кого были траблы такие же, чуть поменяла код мишин и получилось, с категориями пока никак ((. было неожиданно получить от вас ответ)) спасибо за поддержку
@olenakunina1
@olenakunina1 3 жыл бұрын
@@wpplus все сделала - помучалась немного с кнопкой загрузки - то не знала куда ее вставить, то вставила но она не работала , то работала но не так - в общем все ок - спасибо
@faustflammans1949
@faustflammans1949 6 жыл бұрын
Очень тупо что нет уроков в которых бы была инструкция о том как сделать чтобы через ajax открывался один пост, а не цикл. Например - в цикле постов при клике на пост он открывается на той же странице в модальном окне. Если кто владеет такой информацией - прошу поделиться. WP-Plus - Спасибо
@wpplus
@wpplus 6 жыл бұрын
Пожалуйста. Для получения данных одного поста используется функция get_post() - kzbin.info/www/bejne/sKPPdqR5iJmhmZI Принцип тот же. При клике по заголовку поста надо получить его ID (и тут все зависит от вёрстки, надо чтобы в ней был этот ID). Передаем затем ID через AJAX, затем отдаём его get_post(), получаем контент, отдаём обратно. Принимаем его и вставляем в модальное окно. В чем именно сложность?
@olenakunina1
@olenakunina1 3 жыл бұрын
css класс, содержащий id ------ чегооооооо.....
@wpplus
@wpplus 3 жыл бұрын
И Вам здравствуйте. Полная фраза "css класс, содержащий ID рубрики". Что удивляет? У каждой рубрики есть ID, вот он там. Например, css класс "cat-item-97" содержит в себе ID рубрики, равный 97.
@olenakunina1
@olenakunina1 3 жыл бұрын
@@wpplus значит я поняла, что вы имеете в виду класс елемента, который содержит айди елемента, что было бы полной ер...но видимо прослушала, извините
@globalpower6967
@globalpower6967 6 жыл бұрын
Это называется иcпользование Ajax там где он не уместен! За чем собственными руками в не нужном месте использовать Ajax нагружая сервер? Я уже не говорю о том, что Wordpress не очень подходит для использования Ajax и использовать Ajax, если у вас проект на Wordpress нужно только в тех местах, где он действительно необходим!
🤔Какой Орган самый длинный ? #shorts
00:42
Finger Heart - Fancy Refill (Inside Out Animation)
00:30
FASH
Рет қаралды 27 МЛН
НЫСАНА КОНЦЕРТ 2024
2:26:34
Нысана театры
Рет қаралды 1,2 МЛН
React Admin Panel Tutorial | React Admin Dashboard Template Design
3:04:17
Хуки в WordPress и как ими пользоваться
15:20
Финты WordPress
Рет қаралды 27 М.
Ajax в WordPress: пример, теория, нюансы
18:07
Андрей Смородин
Рет қаралды 1,1 М.
Learn Web Development And ACTUALLY Get A Job | Ultimate Guide
1:33:52
James Cross
Рет қаралды 1,3 МЛН