{"id":25363,"date":"2021-06-06T17:44:00","date_gmt":"2021-06-06T14:44:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25363"},"modified":"2021-10-18T02:33:47","modified_gmt":"2021-10-17T23:33:47","slug":"laden-sie-dynamische-inhalte-auf-bootstrap-modal-in-wordpress","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/de\/laden-sie-dynamische-inhalte-auf-bootstrap-modal-in-wordpress\/","title":{"rendered":"Laden Sie dynamische Inhalte auf Bootstrap Modal in WordPress"},"content":{"rendered":"<p>Bootstrap Modal wird verwendet, um Ihrer Website einen Dialog hinzuzuf\u00fcgen. Sie k\u00f6nnen Bootstrap Modal f\u00fcr Leuchtk\u00e4sten, Benachrichtigungen und benutzerdefinierten Inhalt verwenden. K\u00fcrzlich habe ich an einem WordPress-Projekt gearbeitet, bei dem wir benutzerdefinierten Inhalt dynamisch auf Bootstrap Modal laden wollten. In diesem Artikel untersuchen wir, wie dynamische Inhalte in Bootstrap Modal mit Ajax in WordPress geladen werden.<\/p>\n<p>Es gibt viele Szenarien, in denen Sie m\u00f6glicherweise ein Bootstrap-Modal mit dynamischem Inhalt w\u00fcnschen. Nehmen wir das Beispiel von WordPress-Beitr\u00e4gen.<\/p>\n<p>WordPress h\u00e4ngt haupts\u00e4chlich von Beitragstypen ab, um den Inhalt zu verwalten. In WordPress f\u00fchren wir normalerweise eine detaillierte Seite, um den Beitrag anzuzeigen. In einigen F\u00e4llen haben Sie jedoch m\u00f6glicherweise nicht gen\u00fcgend Inhalt f\u00fcr den Beitrag. Anstatt also Post-Inhalte auf einer anderen Seite anzuzeigen, ziehen Sie es vor, sie in einem Pop-up anzuzeigen. M\u00f6glicherweise haben Sie mehrere Beitr\u00e4ge und daher sollte der Inhalt jedes Beitrags dynamisch im Popup geladen werden.<\/p>\n<p>Hier kommt das Bootstrap Modal, mit dem Sie den Endbenutzern Inhalte per Post anzeigen k\u00f6nnen. Dazu m\u00fcssen Sie einige grundlegende Schritte ausf\u00fchren, die im n\u00e4chsten Teil eines Tutorials gezeigt werden.<\/p>\n<h3>Enqueue-Bootstrap-Stil und JS<\/h3>\n<p>F\u00fcr den Einstieg sollten Sie die CSS- und JS-Datei von Bootstrap in Ihr WordPress-Projekt eingebunden haben. Ich werde den WordPress-Standard verwenden, um erforderliche JS- und CSS-Dateien einzubinden. Abgesehen von Bootstrap-Dateien f\u00fcge ich auch hinzu, <code>custom.js<\/code>wo wir die JavaScript-Logik schreiben werden.<\/p>\n<p>\u00d6ffnen Sie Ihre <code>functions.php<\/code>Datei und f\u00fcgen Sie den unten stehenden Code ein.<\/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>Hier f\u00fcge ich Bootstrap-Dateien direkt aus dem CDN ein. Sie k\u00f6nnen es lokal hinzuf\u00fcgen. Passen Sie den Pfad entsprechend an, wenn Sie dies lokal tun. Der <code>custom.js<\/code>Datei habe ich die Standard-Ajax-URL von WordPress und eine Nonce zugewiesen.<\/p>\n<h3>Laden Sie dynamische Inhalte auf Bootstrap Modal in WordPress<\/h3>\n<p>Wie gesagt, ich werde einen Beitragsinhalt dynamisch in Bootstrap Modal laden. Angenommen, Sie haben eine Vorlage erstellt, in der Sie Beitr\u00e4ge auflisten. Jeder Beitrag hat eine Schaltfl\u00e4che &quot;Mehr anzeigen&quot;. Wenn Sie auf diese Schaltfl\u00e4che klicken, sollte sich Bootstrap Modal mit dem Inhalt \u00f6ffnen.<\/p>\n<p>Sie sollten Ihren eigenen HTML-Code f\u00fcr diese Auflistung haben. Sie m\u00fcssen lediglich ein Datenattribut und eine gemeinsame Klasse zu den Schaltfl\u00e4chen hinzuf\u00fcgen. Es kann wie die folgenden Aussagen sein.<\/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>Der Benutzer muss eine respektierte Beitrags-ID f\u00fcr das <code>data-id<\/code>Attribut beibehalten. Der Klassenname, den ich hier verwendet habe, ist &#8218;view-post&#8216;. Als n\u00e4chstes m\u00fcssen Sie entweder in Ihrer Vorlagendatei oder in der Fu\u00dfzeile ein Markup von Bootstrap Modal hinzuf\u00fcgen.<\/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>Wenn Sie bemerken, habe ich den modalen Titel und den Modellk\u00f6rper leer gelassen, die wir dynamisch laden. Ich habe dem Modal die ID &#8218;postModal&#8216; zugewiesen.<\/p>\n<p>Wenn jemand auf die Schaltfl\u00e4che &quot;Mehr anzeigen&quot; klickt, m\u00fcssen wir einen Ajax-Anruf senden. In der Ajax-Antwort senden wir Beitragstitel und Beitragsinhalt, die dann in Modal mit jQuery angeh\u00e4ngt werden. Schreiben Sie also den folgenden jQuery-Code in die <code>custom.js<\/code>Datei.<\/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>Ajax-Aufruf in WordPress<\/h4>\n<p>Aus dem oben geschriebenen jQuery-Code sendet es einen Ajax-Aufruf mit der Aktion &#8218;load_post_by_ajax&#8216;. Wir m\u00fcssen diese Aktion deklarieren und ihr eine Callback-Methode anh\u00e4ngen. In der Callback-Methode wird unser eigentlicher Code geschrieben.<\/p>\n<p>Schreiben Sie den folgenden Code in die <code>functions.php<\/code>Datei.<\/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>Das ist es! Probieren Sie diese L\u00f6sung aus und Sie werden sehen, dass dynamische Inhalte auf Bootstrap Modal geladen werden. Ich w\u00fcrde gerne Ihre Gedanken und Vorschl\u00e4ge im Kommentarbereich unten h\u00f6ren.<\/p>\n<h4>Zum Thema passende Artikel<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-fugen-sie-ein-bildfeld-zur-taxonomie-in-wordpress-hinzu\/\" title=\"So f\u00fcgen Sie ein Bildfeld zur Taxonomie in WordPress hinzu\" >So f\u00fcgen Sie ein Bildfeld zur Taxonomie in WordPress hinzu<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-senden-sie-wordpress-e-mails-uber-den-smtp-server\/\" title=\"So senden Sie WordPress-E-Mails \u00fcber den SMTP-Server\" >So senden Sie WordPress-E-Mails \u00fcber den SMTP-Server<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-erstellen-sie-ein-benutzerdefiniertes-elementor-widget\/\" title=\"So erstellen Sie ein benutzerdefiniertes Elementor-Widget\" >So erstellen Sie ein benutzerdefiniertes Elementor-Widget<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Aufnahmequelle:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u00f6chten Sie dynamische Inhalte auf Bootstrap Modal in WordPress laden? In diesem Artikel nehmen wir ein Live-Beispiel f\u00fcr WordPress-Posts und zeigen<\/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":[607],"tags":[845],"class_list":["post-25363","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized-3","tag-affiai-de"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25363","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/comments?post=25363"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25363\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media\/20329"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media?parent=25363"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/categories?post=25363"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/tags?post=25363"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}