{"id":24563,"date":"2021-05-20T12:20:00","date_gmt":"2021-05-20T09:20:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24563"},"modified":"2021-10-18T02:15:08","modified_gmt":"2021-10-17T23:15:08","slug":"comment-charger-des-articles-wordpress-avec-ajax","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/comment-charger-des-articles-wordpress-avec-ajax\/","title":{"rendered":"Comment charger des articles WordPress avec AJAX"},"content":{"rendered":"<p>Je dirige une <a href=\"https:\/\/www.youtube.com\/channel\/UCosi8Kv8-EPLt5TBJLlsWJA\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cha\u00eene YouTube<\/a> o\u00f9 je publie des vid\u00e9os li\u00e9es \u00e0 la programmation et aux logiciels. R\u00e9cemment, l&rsquo;un des abonn\u00e9s m&rsquo;a demand\u00e9 comment charger un article WordPress avec AJAX. En r\u00e9ponse \u00e0 lui, j&rsquo;ai d\u00e9cid\u00e9 d&rsquo;\u00e9crire un article sur sa question. Donc, dans cet article, nous \u00e9tudions comment charger un article WordPress avec AJAX en utilisant un bouton Charger plus et un d\u00e9filement de page.<\/p>\n<p>La diff\u00e9rence entre le chargement de plus et un d\u00e9filement de page est assez simple. Lorsque vous utilisez le bouton Charger plus, vous devez cliquer sur un bouton pour voir la prochaine s\u00e9rie de messages. Et lors du d\u00e9filement de la page, lorsque vous faites d\u00e9filer jusqu&rsquo;\u00e0 la fin d&rsquo;une fen\u00eatre d&rsquo;affichage, la prochaine s\u00e9rie de publications devrait \u00eatre automatiquement charg\u00e9e.<\/p>\n<p>Supposons que vous ayez quelques articles et que vous deviez afficher 2 articles au chargement de la page, puis en cliquant sur \u00ab\u00a0Charger plus\u00a0\u00bb ou sur \u00ab\u00a0D\u00e9filement de la page\u00a0\u00bb, les 2 articles suivants devraient s&rsquo;afficher. Ce processus se poursuivra jusqu&rsquo;\u00e0 ce que tous vos messages soient affich\u00e9s.<\/p>\n<p>Cr\u00e9ez une nouvelle page appel\u00e9e &lsquo;Blog&rsquo;. Pour afficher vos articles sur la page Blog, cr\u00e9ez un mod\u00e8le personnalis\u00e9 <code>page-blog.php<\/code>dans le r\u00e9pertoire de votre th\u00e8me actif.<\/p>\n<p>D\u00e9sormais, lorsque les utilisateurs visitent votre page de blog, ils devraient voir 2 articles. Alors, ajoutez le code ci-dessous dans votre fichier de mod\u00e8le personnalis\u00e9.<\/p>\n<pre><code>&lt;div class=\"entry-content\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;?php\n\u00a0\u00a0\u00a0\u00a0$args = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'post_type' =&gt; 'post',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'post_status' =&gt; 'publish',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'posts_per_page' =&gt; '2',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'paged' =&gt; 1,\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\u00a0\u00a0$blog_posts = new WP_Query( $args );\n\u00a0\u00a0\u00a0\u00a0?&gt;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0&lt;?php if ($blog_posts-&gt;have_posts() ): ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"blog-posts\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php while ($blog_posts-&gt;have_posts() ): $blog_posts-&gt;the_post(); ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;\/h2&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php the_excerpt(); ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php endwhile; ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"loadmore\"&gt;Load More...&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;?php endif; ?&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Ici, j&rsquo;ai utilis\u00e9 la cl\u00e9 &quot; pagin\u00e9e &quot; et lui ai pass\u00e9 la valeur &quot; 1 &quot;. &lsquo;pagin\u00e9&rsquo; est une cl\u00e9 utilis\u00e9e dans WordPress lorsqu&rsquo;il s&rsquo;agit de pagination. &lsquo;paged&rsquo; =&gt; 1 signifie la premi\u00e8re page.<\/p>\n<p>Vous remarquerez l&rsquo;\u00e9l\u00e9ment div avec la classe &lsquo;loadmore&rsquo;. En cliquant sur Charger plus, nous passerons un appel Ajax et obtiendrons la prochaine s\u00e9rie de messages.<\/p>\n<h3>Charger des articles WordPress avec Ajax sur le bouton Charger plus<\/h3>\n<p>Pour donner un appel Ajax, vous devez inclure le fichier JS dans l&rsquo;environnement WordPress. Cr\u00e9ez un <code>custom.js<\/code>fichier dans le <code>js<\/code>r\u00e9pertoire, puis ajoutez le code ci-dessous dans le <code>functions.php<\/code>fichier.<\/p>\n<pre><code>function blog_scripts() {\n\u00a0\u00a0\u00a0\u00a0\/\/ Register the script\n\u00a0\u00a0\u00a0\u00a0wp_register_script( 'custom-script', get_stylesheet_directory_uri(). '\/js\/custom.js', array('jquery'), false, true );\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ Localize the script with new data\n\u00a0\u00a0\u00a0\u00a0$script_data_array = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'ajaxurl' =&gt; admin_url( 'admin-ajax.php' ),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'security' =&gt; wp_create_nonce( 'load_more_posts' ),\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\u00a0\u00a0wp_localize_script( 'custom-script', 'blog', $script_data_array );\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ Enqueued script with localized data.\n\u00a0\u00a0\u00a0\u00a0wp_enqueue_script( 'custom-script' );\n}\nadd_action( 'wp_enqueue_scripts', 'blog_scripts' );<\/code><\/pre>\n<p>Ensuite, \u00e9crivons un peu de jQuery et donnons un appel Ajax qui en retour donnera les prochains messages.<\/p>\n<p><strong>custom.js<\/strong><\/p>\n<pre><code>var page = 2;\njQuery(function($) {\n\u00a0\u00a0\u00a0\u00a0$('body').on('click', '.loadmore', function() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var data = {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'action': 'load_posts_by_ajax',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'page': page,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'security': blog.security\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0};\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$.post(blog.ajaxurl, data, function(response) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($.trim(response) != '') {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('.blog-posts').append(response);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0page++;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('.loadmore').hide();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0});\n});<\/code><\/pre>\n<p>Ce que nous faisons ici, c&rsquo;est que j&rsquo;ai pris une variable javascript &lsquo;page&rsquo; avec la valeur initiale 2 car nous allons commencer par la pagination de la deuxi\u00e8me page. J&rsquo;incr\u00e9mente cette variable &lsquo;page&rsquo; apr\u00e8s avoir re\u00e7u la r\u00e9ponse Ajax. Apr\u00e8s avoir re\u00e7u la r\u00e9ponse, je l&rsquo;ajoute \u00e0 la liste des messages existants.<\/p>\n<p>J&rsquo;ai \u00e9galement utilis\u00e9 le param\u00e8tre d&rsquo;action en tant que &lsquo;load_posts_by_ajax&rsquo; pour un appel Ajax qui doit \u00eatre mapp\u00e9 avec les actions WordPress. Ouvrez votre <code>functions.php<\/code>fichier et ajoutez le code ci-dessous \u00e0 un fichier.<\/p>\n<pre><code>add_action('wp_ajax_load_posts_by_ajax', 'load_posts_by_ajax_callback');\nadd_action('wp_ajax_nopriv_load_posts_by_ajax', 'load_posts_by_ajax_callback');<\/code><\/pre>\n<p>Dans les actions WordPress ci-dessus, nous appelons la fonction de rappel <code>load_posts_by_ajax_callback<\/code>que je vais d\u00e9finir \u00e0 l&rsquo;\u00e9tape suivante. Vous pouvez d\u00e9finir cette fonction dans votre <code>functions.php<\/code>.<\/p>\n<pre><code>function load_posts_by_ajax_callback() {\n\u00a0\u00a0\u00a0\u00a0check_ajax_referer('load_more_posts', 'security');\n\u00a0\u00a0\u00a0\u00a0$paged = $_POST['page'];\n\u00a0\u00a0\u00a0\u00a0$args = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'post_type' =&gt; 'post',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'post_status' =&gt; 'publish',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'posts_per_page' =&gt; '2',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'paged' =&gt; $paged,\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\u00a0\u00a0$blog_posts = new WP_Query( $args );\n\u00a0\u00a0\u00a0\u00a0?&gt;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0&lt;?php if ($blog_posts-&gt;have_posts() ): ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php while ($blog_posts-&gt;have_posts() ): $blog_posts-&gt;the_post(); ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;\/h2&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php the_excerpt(); ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php endwhile; ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php\n\u00a0\u00a0\u00a0\u00a0endif;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0wp_die();\n}<\/code><\/pre>\n<p>Maintenant, lorsque vous cliquez sur le bouton \u00ab\u00a0Charger plus\u00a0\u00bb, il chargera les prochains messages via Ajax et les renverra en r\u00e9ponse. Le code JavaScript \u00e9crit ci-dessus g\u00e9rerait le reste.<\/p>\n<h3>Charger des articles WordPress avec Ajax sur le d\u00e9filement de la page<\/h3>\n<p>Certains utilisateurs peuvent ne pas vouloir de bouton Charger plus pour afficher les publications avec Ajax. Au lieu de cela, ils pr\u00e9f\u00e8rent que les publications s&rsquo;affichent une fois que l&rsquo;utilisateur atteint la fin d&rsquo;une fen\u00eatre d&rsquo;affichage.<\/p>\n<p>Pour y parvenir, vous devez \u00e9crire une logique qui capture l&rsquo;\u00e9v\u00e9nement \u00e0 la fin d&rsquo;une fen\u00eatre, le reste du code est le m\u00eame que le bouton \u00ab\u00a0Charger plus\u00a0\u00bb. Vous trouverez ci-dessous le code jQuery pour le d\u00e9filement de page.<\/p>\n<pre><code>jQuery(window).scroll(function($) {\n\u00a0\u00a0\u00a0\u00a0if (jQuery(window).scrollTop() + jQuery(window).height() &gt; jQuery(document).height()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var data = {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'action': 'load_posts_by_ajax',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'page': page,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'security': blog.security\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0};\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$.post(blog.ajaxurl, data, function(response) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($.trim(response) != '') {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('.blog-posts').append(response);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0page++;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('.loadmore').hide();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0}\n});<\/code><\/pre>\n<p>C&rsquo;est \u00e7a! Vous pouvez aller de l&rsquo;avant et l&rsquo;essayer. J&rsquo;aimerais conna\u00eetre vos pens\u00e9es et suggestions dans les commentaires ci-dessous.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-integrer-le-telechargement-de-fichiers-ajax-dans-wordpress\/\" title=\"Comment int\u00e9grer le t\u00e9l\u00e9chargement de fichiers Ajax dans WordPress\">Comment int\u00e9grer le t\u00e9l\u00e9chargement de fichiers Ajax dans WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-utiliser-jquery-ajax-dans-wordpress\/\" title=\"Comment utiliser jQuery Ajax dans WordPress\">Comment utiliser jQuery Ajax dans WordPress<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il est tr\u00e8s courant de nos jours de charger un article WordPress avec AJAX. WordPress ne le fournit pas par d\u00e9faut. Dans ce tutoriel, nous expliquons comment g\u00e9rer cette t\u00e2che.<\/p>\n","protected":false},"author":1,"featured_media":21653,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[608],"tags":[844],"class_list":["post-24563","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized-4","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/24563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/comments?post=24563"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/24563\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/21653"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=24563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=24563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=24563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}