{"id":25416,"date":"2021-06-06T17:42:00","date_gmt":"2021-06-06T14:42:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25416"},"modified":"2021-10-18T02:08:32","modified_gmt":"2021-10-17T23:08:32","slug":"charger-du-contenu-dynamique-sur-bootstrap-modal-dans-wordpress","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/charger-du-contenu-dynamique-sur-bootstrap-modal-dans-wordpress\/","title":{"rendered":"Charger du contenu dynamique sur Bootstrap Modal dans WordPress"},"content":{"rendered":"<p>Bootstrap Modal est utilis\u00e9 pour ajouter une bo\u00eete de dialogue \u00e0 votre site Web. Vous pouvez utiliser Bootstrap Modal pour les visionneuses, les notifications et le contenu personnalis\u00e9. R\u00e9cemment, j&rsquo;ai travaill\u00e9 sur un projet WordPress dans lequel nous voulions charger dynamiquement du contenu personnalis\u00e9 sur Bootstrap Modal. Dans cet article, nous \u00e9tudions comment charger du contenu dynamique dans Bootstrap Modal en utilisant Ajax dans WordPress.<\/p>\n<p>Il existe de nombreux sc\u00e9narios dans lesquels vous souhaiterez peut-\u00eatre un modal Bootstrap avec un contenu dynamique. Prenons l&rsquo;exemple des publications WordPress.<\/p>\n<p>WordPress d\u00e9pend principalement des types de publication pour g\u00e9rer le contenu. Dans WordPress g\u00e9n\u00e9ralement, nous gardons une page d\u00e9taill\u00e9e pour afficher le message. Mais dans certains cas, vous pourriez ne pas avoir assez de contenu pour la publication. Ainsi, au lieu d&rsquo;afficher le contenu de la publication sur une autre page, vous pr\u00e9f\u00e9rez l&rsquo;afficher dans une fen\u00eatre contextuelle. Vous pouvez avoir quelques articles et le contenu de chaque article doit donc se charger dynamiquement dans la fen\u00eatre contextuelle.<\/p>\n<p>Voici le Bootstrap Modal que vous pouvez utiliser pour afficher le contenu par publication aux utilisateurs finaux. Cela vous oblige \u00e0 suivre quelques \u00e9tapes de base, comme indiqu\u00e9 dans la partie suivante d&rsquo;un didacticiel.<\/p>\n<h3>Mettre en file d&rsquo;attente le style Bootstrap et JS<\/h3>\n<p>Pour commencer, vous devriez avoir inclus les fichiers CSS et JS de Bootstrap dans votre projet WordPress. Je vais utiliser la norme WordPress pour inclure les fichiers JS et CSS requis. Outre les fichiers Bootstrap, j&rsquo;ajoute \u00e9galement <code>custom.js<\/code>o\u00f9 nous \u00e9crirons la logique JavaScript.<\/p>\n<p>Ouvrez votre <code>functions.php<\/code>fichier et ajoutez-y le code ci-dessous.<\/p>\n<pre><code>function artisansweb_scripts() {\n\u00a0\u00a0\u00a0\u00a0wp_enqueue_style( 'bootstrapcss', 'https:\/\/stackpath.bootstrapcdn.com\/bootstrap\/4.5.2\/css\/bootstrap.min.css', array(), false, 'all' );\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0wp_register_script('bootstrapjs', 'https:\/\/stackpath.bootstrapcdn.com\/bootstrap\/4.5.2\/js\/bootstrap.min.js', array('jquery'), false, true);\n\u00a0\u00a0\u00a0\u00a0wp_enqueue_script('bootstrapjs');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0wp_register_script('custom-script', get_stylesheet_directory_uri(). '\/js\/custom.js', array('jquery'), false, true);\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( 'view_post' ),\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\u00a0\u00a0wp_localize_script( 'custom-script', 'blog', $script_data_array );\n\u00a0\u00a0\u00a0\u00a0wp_enqueue_script('custom-script');\n}\nadd_action( 'wp_enqueue_scripts', 'artisansweb_scripts' );<\/code><\/pre>\n<p>Ici, j&rsquo;inclus les fichiers Bootstrap directement \u00e0 partir du CDN. Vous voudrez peut-\u00eatre l&rsquo;ajouter localement. Ajustez le chemin en cons\u00e9quence si vous le faites localement. Au <code>custom.js<\/code>fichier, j&rsquo;ai attribu\u00e9 l&rsquo;URL Ajax par d\u00e9faut de WordPress et un nonce.<\/p>\n<h3>Charger du contenu dynamique sur Bootstrap Modal dans WordPress<\/h3>\n<p>Comme dit, je vais charger dynamiquement le contenu d&rsquo;un article dans Bootstrap Modal. Supposons que vous ayez cr\u00e9\u00e9 un mod\u00e8le dans lequel vous r\u00e9pertoriez les articles. Chaque publication a un bouton &lsquo;Voir plus&rsquo;. En cliquant sur ce bouton, Bootstrap Modal devrait s&rsquo;ouvrir avec le contenu.<\/p>\n<p>Vous devriez avoir votre propre code HTML pour cette liste. Tout ce que vous avez \u00e0 faire est d&rsquo;ajouter un attribut de donn\u00e9es et une classe commune aux boutons. Cela peut \u00eatre comme les d\u00e9clarations ci-dessous.<\/p>\n<pre><code>&lt;button data-id=\"YOUR_POST_ID\" class=\"view-post\"&gt;&lt;?php _e('View More'); ?&gt;&lt;\/button&gt;\n&lt;button data-id=\"YOUR_POST_ID\" class=\"view-post\"&gt;&lt;?php _e('View More'); ?&gt;&lt;\/button&gt;<\/code><\/pre>\n<p>L&rsquo;utilisateur doit conserver un identifiant de publication respect\u00e9 pour l&rsquo; <code>data-id<\/code>attribut. Le nom de classe que j&rsquo;ai utilis\u00e9 ici est &lsquo;view-post&rsquo;. Ensuite, vous devez ajouter un balisage de Bootstrap Modal dans votre fichier mod\u00e8le ou dans le pied de page.<\/p>\n<pre><code>&lt;!-- Modal --&gt;\n&lt;div class=\"modal fade\" id=\"postModal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"postModalLabel\" aria-hidden=\"true\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"modal-dialog\" role=\"document\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"modal-content\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"modal-header\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;h5 class=\"modal-title\" id=\"postModalLabel\"&gt;&lt;\/h5&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;span aria-hidden=\"true\"&gt;\u00d7&lt;\/span&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/button&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"modal-body\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Si vous le remarquez, j&rsquo;ai laiss\u00e9 le titre modal et le corps du mod\u00e8le vides que nous chargerons dynamiquement. J&rsquo;ai attribu\u00e9 l&rsquo;identifiant &lsquo;postModal&rsquo; au modal.<\/p>\n<p>Lorsque quelqu&rsquo;un clique sur le bouton \u00ab\u00a0Voir plus\u00a0\u00bb, nous devons envoyer un appel Ajax. Dans la r\u00e9ponse Ajax, nous envoyons le titre de la publication et le contenu de la publication qui s&rsquo;ajoute ensuite dans Modal \u00e0 l&rsquo;aide de jQuery. Alors, \u00e9crivez le code jQuery ci-dessous dans le <code>custom.js<\/code>fichier.<\/p>\n<pre><code>jQuery(function($) {\n\u00a0\u00a0\u00a0\u00a0$('body').on('click', '.view-post', 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_post_by_ajax',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'id': $(this).data('id'),\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\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\u00a0response = JSON.parse(response);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('#postModal h5#postModalLabel').text(response.title);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('#postModal .modal-body').html(response.content);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('#postModal').modal({show:true});\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0});\n});<\/code><\/pre>\n<h4>Appel Ajax dans WordPress<\/h4>\n<p>\u00c0 partir du code jQuery \u00e9crit ci-dessus, il envoie un appel Ajax avec l&rsquo;action &lsquo;load_post_by_ajax&rsquo;. Nous devons d\u00e9clarer cette action et lui attacher une m\u00e9thode de rappel. Dans la m\u00e9thode de rappel, notre code r\u00e9el sera \u00e9crit.<\/p>\n<p>\u00c9crivez le code ci-dessous dans le <code>functions.php<\/code>fichier.<\/p>\n<pre><code>add_action('wp_ajax_load_post_by_ajax', 'load_post_by_ajax_callback');\nadd_action('wp_ajax_nopriv_load_post_by_ajax', 'load_post_by_ajax_callback');\n\u00a0\nfunction load_post_by_ajax_callback() {\n\u00a0\u00a0\u00a0\u00a0check_ajax_referer('view_post', 'security');\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'p' =&gt; $_POST['id'],\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$posts = new WP_Query( $args );\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$arr_response = array();\n\u00a0\u00a0\u00a0\u00a0if ($posts-&gt;have_posts()) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0while($posts-&gt;have_posts()) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$posts-&gt;the_post();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$arr_response = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'title' =&gt; get_the_title(),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'content' =&gt; get_the_content(),\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\u00a0\u00a0\u00a0\u00a0wp_reset_postdata();\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0echo json_encode($arr_response);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0wp_die();\n}<\/code><\/pre>\n<p>C&rsquo;est \u00e7a! Essayez cette solution et vous la verrez charger du contenu dynamique sur Bootstrap Modal. J&rsquo;aimerais entendre vos pens\u00e9es et suggestions dans la section des commentaires ci-dessous.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-ajouter-un-champ-d-image-a-la-taxonomie-dans-wordpress\/\" title=\"Comment ajouter un champ d'image \u00e0 la taxonomie dans WordPress\" >Comment ajouter un champ d&rsquo;image \u00e0 la taxonomie dans WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-envoyer-un-e-mail-wordpress-a-l-aide-du-serveur-smtp\/\" title=\"Comment envoyer un e-mail WordPress \u00e0 l'aide du serveur SMTP\" >Comment envoyer un e-mail WordPress \u00e0 l&rsquo;aide du serveur SMTP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-creer-un-widget-elementor-personnalise\/\" title=\"Comment cr\u00e9er un widget Elementor personnalis\u00e9\" >Comment cr\u00e9er un widget Elementor personnalis\u00e9<\/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>Voulez-vous charger du contenu dynamique sur Bootstrap Modal dans WordPress\u00a0? Dans cet article, nous examinerons en direct la publication et le spectacle de WordPress<\/p>\n","protected":false},"author":1,"featured_media":20329,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[608],"tags":[844],"class_list":["post-25416","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\/25416","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=25416"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25416\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/20329"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=25416"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=25416"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=25416"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}