{"id":233268,"date":"2023-02-10T16:16:00","date_gmt":"2023-02-10T13:16:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233268"},"modified":"2022-11-10T20:12:33","modified_gmt":"2022-11-10T17:12:33","slug":"lisaeae-seuraava-satunnainen-viesti-wordpress-sivumalliin-sql-n-avulla","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/lisaeae-seuraava-satunnainen-viesti-wordpress-sivumalliin-sql-n-avulla\/","title":{"rendered":"Lis\u00e4\u00e4 seuraava satunnainen viesti WordPress-sivumalliin SQL:n avulla"},"content":{"rendered":"\n<p>Saatat usein saada neuvoja SEO:n (hakukoneoptimoinnin) parantamiseen lis\u00e4\u00e4m\u00e4ll\u00e4 linkkej\u00e4 aikaisempiin viesteihisi, kun julkaiset uuden viestin. T\u00e4m\u00e4 auttaa lis\u00e4\u00e4m\u00e4\u00e4n liikennett\u00e4 ja toimii samalla tavalla kuin &quot;Suhteelliset viestit&quot; -laajennukset, mutta vain yksinkertaisemmin.<\/p>\n<p>Kaikki wordpress-viestit on tallennettu taulukkoon esim <strong>. wp_posts<\/strong> ja t\u00e4m\u00e4n taulukon sis\u00e4lt\u00e4 l\u00f6yd\u00e4t <strong>post_title<\/strong>, <strong>post_name<\/strong> ja n\u00e4m\u00e4 sarakkeet ovat melko yksinkertaisia. Viestisi URL-osoitteiden asetuksista riippuen sinulla voi olla eri muotoisia pysyvi\u00e4 linkkej\u00e4, jotka voidaan m\u00e4\u00e4ritt\u00e4\u00e4 Asetukset &#8211; Pysyv\u00e4 linkki -osiossa.<\/p>\n<p>Seuraava PHP-koodi voidaan lis\u00e4t\u00e4 sivumalliisi, tavallisesti <strong>single.php<\/strong>, joka on yksitt\u00e4isviestimalli tai <strong>page.php<\/strong> sivumallille.<\/p>\n<pre><code>\u00a0 global $wpdb; \/\/ include the $wpdb\n\u00a0 $query = \"select `post_title` as `title`, `post_name` as `name` from `wp_posts` where `post_type`='post' and `post_status`='publish' order by rand() limit 1\";\n\u00a0 $results = $wpdb-&gt;get_results($query); \/\/ run the query on the database\n\u00a0 if ($results) { \n\u00a0 \u00a0 $domain = $_SERVER['SERVER_NAME'];\n\u00a0 \u00a0 foreach ($results as $toppost) {\n\u00a0 \u00a0 \u00a0 \u00a0 echo \"&lt;a href=\"&lt;a class=\"vglnk\" target=\"_blank\" href=\"http:\/\/$domain\/\".$toppost-\" rel=\"nofollow\"&gt;&lt;span&gt;http&lt;\/span&gt;&lt;span&gt;:\/\/$&lt;\/span&gt;&lt;span&gt;domain&lt;\/span&gt;&lt;span&gt;\/\".$&lt;\/span&gt;&lt;span&gt;toppost&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;\/a&gt;&gt;name.\"\/\"&gt;&lt;img title=\"Next Post: \".$toppost-&gt;title.\"\" src=\"&lt;a class=\"vglnk\" target=\"_blank\" href=\"https:\/\/helloacm.com\/static\/nextpost2.png\" rel=\"nofollow\"&gt;&lt;span&gt;https&lt;\/span&gt;&lt;span&gt;:\/\/&lt;\/span&gt;&lt;span&gt;helloacm&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;com&lt;\/span&gt;&lt;span&gt;\/&lt;\/span&gt;&lt;span&gt;static&lt;\/span&gt;&lt;span&gt;\/&lt;\/span&gt;&lt;span&gt;nextpost2&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;png&lt;\/span&gt;&lt;\/a&gt;\" alt=\"Next Post: \".$toppost-&gt;title.\"\" \/&gt;&lt;\/a&gt;\";\n\u00a0 \u00a0 }\n\u00a0 }<\/code><\/pre>\n<p>Muuta <strong>wp_posts<\/strong> vastaavasti, koska t\u00e4m\u00e4 saattaa vaihdella hieman. SQL-kysely palauttaa satunnaisen postauksen, jossa se sulkee pois sivut tai menu_items, linkit jne. Ja postauksen tila tulee julkaista, joka j\u00e4tt\u00e4\u00e4 pois luonnoksen. <strong>Raja 1<\/strong> palauttaa vain 1 viestin. Joten jos haluat edellisen postauksen, voit muuttaa t\u00e4m\u00e4n <strong>rajaksi 2<\/strong>.<\/p>\n<p>Sivustollani oleva pysyv\u00e4 linkki perustuu <strong>post_name<\/strong> -arvoon, joka on SEO-yst\u00e4v\u00e4llisempi. Voit hyvin muokata t\u00e4t\u00e4. SQL-kysely\u00e4 voidaan my\u00f6s mukauttaa. Saatat esimerkiksi haluta palauttaa asiaankuuluvat viestit satunnaisten viestien sijaan sovittamalla <code>title<\/code>arvon nykyisen viestin otsikon mukaan. Tai jos haluat todella palauttaa sen edellisen tai seuraavan viestin julkaisup\u00e4iv\u00e4n mukaan lajiteltuna, voit k\u00e4ytt\u00e4\u00e4 post_id-kentt\u00e4\u00e4.<\/p>\n<h3>Kommentit<\/h3>\n<p>Yu \u2013 &#8221;Col, random on todella mukavaa. Varmista my\u00f6s, ett\u00e4 satunnainen liittyy nykyiseen viestiin. Mutta t\u00e4m\u00e4 ei yleens\u00e4 ole iso ongelma, kunhan blogi koskee vain yht\u00e4 genre\u00e4.<\/p>\n<p>My\u00f6s RAND():n j\u00e4rjestys toimii hyvin tuhansille tietueille. (yleens\u00e4 normaalin blogin tapaus). Mutta se polttaa tietokantasi, jos sinulla on miljoonia tietueita samassa taulukossa, jotka vastaavat hakuehtoja.&quot;<\/p>\n<p>Kyll\u00e4, SQL- <strong>j\u00e4rjestys rand():lla<\/strong> on hieman hankala ja hidas. Sen on haettava kaikki tietueet ja lajiteltava satunnaisesti. Sit\u00e4 pidet\u00e4\u00e4n alhaisena hy\u00f6tysuhteena, kun p\u00f6yt\u00e4koko on keskikokoinen tai suuri. Saatat haluta k\u00e4ytt\u00e4\u00e4 seuraavaa temppua saadaksesi satunnaisen tietueen nopeammin k\u00e4ytt\u00e4m\u00e4ll\u00e4 PHP :n <strong>rand() -funktiota.<\/strong><\/p>\n<pre><code>\/\/ get total number of records\n$query = \"select count(1) from `table`\";\n$result = mysql_query($query) or die(mysql_error());\n$total = mysql_result($result, 0, 0);\n\n\/\/ get a random\n$r = rand(0, $total - 1);\n\/\/ return a number between 0 and $total - 1 inclusive using PHP\n$query = \"select * from `table` limit $r, 1\";\n$result = mysql_query($query) or die(mysql_error());<\/code><\/pre>\n<p>SQL &#8211; <strong>rajoituksen<\/strong> syyt m\u00e4\u00e4ritt\u00e4\u00e4 poikkeaman ja toinen parametri m\u00e4\u00e4ritt\u00e4\u00e4 haettavien tietueiden m\u00e4\u00e4r\u00e4n.<\/p>\n<h3>Parempi Random Record<\/h3>\n<p>Yll\u00e4 olevan <strong>mukaan rand()<\/strong> -j\u00e4rjestys on eritt\u00e4in tehoton, jos sinulla on eritt\u00e4in suuri taulukko, koska lajittelua varten (vaikka haluat vain yhden kohteen), <strong>rand()<\/strong> -funktiota vedet\u00e4\u00e4n, ja sit\u00e4 emme tee. haluta. Voimme parantaa yll\u00e4 olevaa k\u00e4ytt\u00e4m\u00e4ll\u00e4 kahta kysely\u00e4, joista ensimm\u00e4inen palauttaa viestien kokonaism\u00e4\u00e4r\u00e4n, ja meill\u00e4 on PHP satunnaisfunktio ja saamme satunnaistietueen k\u00e4ytt\u00e4m\u00e4ll\u00e4 <strong>limit<\/strong> &#8211; lausetta.<\/p>\n<pre><code>global $wpdb; \/\/ include the $wpdb\n$query= \"select count(1) from `wp_posts` where `post_type`='post' and `post_status`='publish'\";\n$cnt = $wpdb-&gt;get_var($query); \/\/ run the query on the database and return single variable\n$rand = mt_rand(0, $cnt - 1);\n$query= \"select `post_title` as `title`, `post_name` as `name` from `wp_posts` where `post_type`='post' and `post_status`='publish' limit $rand,1\";\n$results = $wpdb-&gt;get_results($query); \/\/ run the query on the database\n\/\/ the rest are the same<\/code><\/pre>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lis\u00e4\u00e4 seuraava satunnainen viesti WordPress-sivumalliin<\/p>\n","protected":false},"author":1,"featured_media":224094,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[895,719,719,895,1110,834,843,803,803,834,843,864,864],"tags":[1166],"class_list":{"0":"post-233268","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-koodi","8":"category-kehittaejae","11":"category-n-a","12":"category-opas-aloittelijoille","13":"category-opetusohjelmia","14":"category-php-5","18":"category-wordpress-5","20":"tag-affiai-fi"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=233268"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233268\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/224094"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=233268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=233268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=233268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}