{"id":24545,"date":"2021-05-20T12:47:00","date_gmt":"2021-05-20T09:47:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24545"},"modified":"2021-10-17T20:47:58","modified_gmt":"2021-10-17T17:47:58","slug":"kuinka-ladata-wordpress-viesteja-ajax-lla","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/kuinka-ladata-wordpress-viesteja-ajax-lla\/","title":{"rendered":"Kuinka ladata WordPress-viestej\u00e4 AJAX: lla"},"content":{"rendered":"<p>K\u00e4yt\u00e4n <a href=\"https:\/\/www.youtube.com\/channel\/UCosi8Kv8-EPLt5TBJLlsWJA\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">YouTube-kanavaa,<\/a> johon l\u00e4het\u00e4n ohjelmointiin ja ohjelmistoihin liittyvi\u00e4 videoita. \u00c4skett\u00e4in yksi tilaaja kysyi minulta, kuinka WordPress-viesti ladataan AJAX: lla. Vastauksena h\u00e4nelle p\u00e4\u00e4tin kirjoittaa viestin h\u00e4nen kysymyksest\u00e4\u00e4n. Joten t\u00e4ss\u00e4 artikkelissa tutkitaan, miten WordPress-viesti ladataan AJAX: lla k\u00e4ytt\u00e4m\u00e4ll\u00e4 lis\u00e4\u00e4 latauspainiketta ja sivun vierityst\u00e4.<\/p>\n<p>Latauksen lis\u00e4\u00e4misen ja sivun vierityksen v\u00e4linen ero on melko yksinkertainen. Kun k\u00e4yt\u00e4t Lataa lis\u00e4\u00e4 -painiketta, sinun on napsautettava painiketta n\u00e4hd\u00e4ksesi seuraavan joukon viestej\u00e4. Ja kun vierit\u00e4t n\u00e4kym\u00e4n loppuun, vieritys sivun vieress\u00e4 seuraavan postitusjoukon pit\u00e4isi latautua automaattisesti.<\/p>\n<p>Oletetaan, ett\u00e4 sinulla on pari viesti\u00e4 ja sinun on n\u00e4ytett\u00e4v\u00e4 2 viesti\u00e4 sivulatauksessa ja napsauttamalla sitten Lataa lis\u00e4\u00e4 tai Sivun vieritys tulee n\u00e4kyviin seuraavat 2 viesti\u00e4. T\u00e4t\u00e4 prosessia jatkettaisiin, kunnes kaikki viestisi n\u00e4ytet\u00e4\u00e4n.<\/p>\n<p>Luo uusi sivu nimelt\u00e4 Blogi. Jos haluat n\u00e4ytt\u00e4\u00e4 viestej\u00e4si Blogi-sivulla, luo mukautettu malli <code>page-blog.php<\/code>aktiivisen teeman hakemistoon.<\/p>\n<p>Nyt kun k\u00e4ytt\u00e4j\u00e4t vierailevat blogisivullasi, heid\u00e4n pit\u00e4isi n\u00e4hd\u00e4 2 viesti\u00e4. Lis\u00e4\u00e4 siis alla oleva koodi mukautettuun mallitiedostoon.<\/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>T\u00e4ss\u00e4 k\u00e4ytin &#8217;paged&#8217; -avainta ja v\u00e4litin sille arvon &#8217;1&#8217;. &#8217;paged&#8217; on avain, jota k\u00e4ytet\u00e4\u00e4n WordPressiss\u00e4 sivutettaessa. &#8217;paged&#8217; =&gt; 1 tarkoittaa ensimm\u00e4ist\u00e4 sivua.<\/p>\n<p>Huomaa div-elementin, jonka luokka on &#8217;loadmore&#8217;. Napsauttamalla Lataa lis\u00e4\u00e4, soitamme Ajax-puhelun ja saamme seuraavan joukon viestej\u00e4.<\/p>\n<h3>Lataa WordPress-viestej\u00e4 Ajaxilla Lis\u00e4\u00e4 painiketta<\/h3>\n<p>Ajax-puhelun soittamiseksi sinun on sis\u00e4llytett\u00e4v\u00e4 JS-tiedosto WordPress-ymp\u00e4rist\u00f6\u00f6n. Luo <code>custom.js<\/code>tiedosto <code>js<\/code>hakemistoon ja lis\u00e4\u00e4 sitten alla oleva koodi <code>functions.php<\/code>tiedostoon.<\/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>Seuraavaksi kirjoitetaan v\u00e4h\u00e4n jQuery\u00e4 ja annetaan Ajax-kutsu, joka vastineeksi antaa seuraavat viestit.<\/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>Mit\u00e4 teemme t\u00e4\u00e4ll\u00e4, otin javascript-muuttujan &quot;sivu&quot;, jonka alkuarvo oli 2, koska aloitamme toisen sivun sivutuksella. Lis\u00e4\u00e4n t\u00e4t\u00e4 &#8217;sivu&#8217; -muuttujaa saatuani Ajax-vastauksen. Saatuani vastauksen liit\u00e4n sen olemassa oleviin viesteihin.<\/p>\n<p>K\u00e4ytin my\u00f6s toimintoparametria nimell\u00e4 &#8217;load_posts_by_ajax&#8217; Ajax-puheluun, joka on kartoitettava WordPress-toiminnoilla. Avaa <code>functions.php<\/code>tiedosto ja lis\u00e4\u00e4 alla oleva koodi tiedostoon.<\/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>Edell\u00e4 mainituissa WordPress-toiminnoissa kutsumme takaisinsoittotoimintoa, <code>load_posts_by_ajax_callback<\/code>jonka aion m\u00e4\u00e4ritt\u00e4\u00e4 seuraavassa vaiheessa. Voit m\u00e4\u00e4ritt\u00e4\u00e4 t\u00e4m\u00e4n toiminnon omassa <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>Nyt kun napsautat Lataa lis\u00e4\u00e4 -painiketta, se lataa seuraavat viestit Ajaxin kautta ja palauttaa sen vastauksena. Yll\u00e4 kirjoitettu JavaScript-koodi k\u00e4sittelee loput tavarat.<\/p>\n<h3>Lataa WordPress-viestej\u00e4 Ajaxilla sivun vieritykseen<\/h3>\n<p>Jotkut k\u00e4ytt\u00e4j\u00e4t eiv\u00e4t ehk\u00e4 halua ladata lis\u00e4\u00e4 -painiketta n\u00e4ytt\u00e4\u00e4ksesi viestit Ajaxilla. Sen sijaan he haluavat, ett\u00e4 viestit n\u00e4kyv\u00e4t, kun k\u00e4ytt\u00e4j\u00e4 saavuttaa n\u00e4kym\u00e4n loppuun.<\/p>\n<p>T\u00e4m\u00e4n saavuttamiseksi sinun on kirjoitettava logiikka, joka tallentaa tapahtuman n\u00e4kym\u00e4n loppuun, loppuosa koodi on sama kuin Lataa lis\u00e4\u00e4 -painike. Alla on jQuery-koodi sivun vieritykseen.<\/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>Se siit\u00e4! Voit menn\u00e4 eteenp\u00e4in ja kokeilla sit\u00e4. Haluaisin tiet\u00e4\u00e4 ajatuksesi ja ehdotuksesi alla olevissa kommenteissa.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/ajax-tiedostojen-lataamisen-integrointi-wordpressiin\/\" title=\"Ajax-tiedostojen lataamisen integrointi WordPressiin\">Ajax-tiedostojen lataamisen integrointi WordPressiin<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-kayttaa-jquery-ajaxia-wordpressissa\/\" title=\"Kuinka k\u00e4ytt\u00e4\u00e4 jQuery Ajaxia WordPressiss\u00e4\">Kuinka k\u00e4ytt\u00e4\u00e4 jQuery Ajaxia WordPressiss\u00e4<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nyky\u00e4\u00e4n on hyvin yleist\u00e4 ladata WordPress Post AJAX: lla. WordPress ei tarjoa sit\u00e4 oletuksena. T\u00e4ss\u00e4 opetusohjelmassa kerrotaan, miten t\u00e4m\u00e4 teht\u00e4v\u00e4 k\u00e4sitell\u00e4\u00e4n.<\/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":[610],"tags":[843],"class_list":["post-24545","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized-6","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24545","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=24545"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24545\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/21653"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=24545"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=24545"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=24545"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}