{"id":233310,"date":"2023-02-10T16:08:00","date_gmt":"2023-02-10T13:08:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233310"},"modified":"2022-11-10T20:24:58","modified_gmt":"2022-11-10T17:24:58","slug":"aggiungi-un-prossimo-post-casuale-nel-modello-di-pagina-di-wordpress-utilizzando-sql","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/aggiungi-un-prossimo-post-casuale-nel-modello-di-pagina-di-wordpress-utilizzando-sql\/","title":{"rendered":"Aggiungi un prossimo post casuale nel modello di pagina di WordPress utilizzando SQL"},"content":{"rendered":"\n<p>Potresti ricevere spesso consigli su come migliorare la SEO (ottimizzazione per i motori di ricerca) aggiungendo link ai tuoi post precedenti quando pubblichi un nuovo post. Questo aiuta ad aumentare il traffico e funziona in modo simile a plug-in come &quot;Post relativi&quot; ma solo in modo pi\u00f9 semplice.<\/p>\n<p>Tutti i post di wordpress sono memorizzati nella tabella, ad esempio <strong>wp_posts<\/strong> e all&#8217;interno di questa tabella troverai <strong>post_title<\/strong>, <strong>post_name<\/strong> e queste colonne sono piuttosto semplici. A seconda delle configurazioni degli URL dei tuoi post, potresti avere un diverso formato di permalink che pu\u00f2 essere configurato nella sezione Impostazioni &#8211; Collegamento permanente.<\/p>\n<p>Il seguente codice PHP pu\u00f2 essere inserito nel tuo modello di pagina, normalmente <strong>single.php<\/strong> che \u00e8 il modello di post singolo o <strong>page.php<\/strong> per il modello di pagina.<\/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>Modifica <strong>wp_posts<\/strong> di conseguenza poich\u00e9 potrebbe variare leggermente. La query SQL restituisce un post casuale in cui esclude le pagine, o menu_items, collegamenti ecc. E lo stato del post dovrebbe essere pubblicato escludendo la bozza. Il <strong>limite 1<\/strong> restituisce solo 1 post. Quindi, se desideri un post precedente, potresti considerare di modificarlo per <strong>limitare 2<\/strong>.<\/p>\n<p>Il permalink sul mio sito si basa sul <strong>post_name<\/strong> che \u00e8 pi\u00f9 SEO friendly. Potresti anche personalizzarlo. Anche la query SQL pu\u00f2 essere personalizzata. Ad esempio, potresti voler restituire post pertinenti invece di post casuali facendo corrispondere il <code>title<\/code>valore in base al titolo del post corrente. Oppure vuoi davvero restituire il suo post precedente o successivo ordinato per data di pubblicazione, potresti voler utilizzare il campo &#8216;post_id&#8217;.<\/p>\n<h3>Commenti<\/h3>\n<p>Yu \u2013 &#8220;Fantastico, casuale \u00e8 davvero bello. Inoltre, assicurati che quello casuale sia correlato al post corrente. Ma questo di solito non \u00e8 un grosso problema fintanto che il blog \u00e8 per un singolo genere.<\/p>\n<p>Anche l&#8217;ordine di RAND() funziona bene per migliaia di record. (di solito il caso di un normale blog). Ma brucer\u00e0 il tuo database se hai milioni di record nella stessa tabella che corrisponde ai criteri di ricerca.&quot;<\/p>\n<p>S\u00ec, l&#8217; <strong>ordine SQL di rand()<\/strong> \u00e8 un po&#8217; complicato e lento. Deve recuperare tutti i record e ordinarli in modo casuale. \u00c8 considerato a bassa efficienza quando le dimensioni del tavolo sono medie o grandi. Potresti voler usare il seguente trucco per ottenere un record casuale in modo pi\u00f9 veloce utilizzando la funzione <strong>rand()<\/strong> in PHP.<\/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><strong>Le cause del limite<\/strong> SQL specificano l&#8217;offset e il secondo parametro specifica il numero di record da recuperare.<\/p>\n<h3>Migliore registrazione casuale<\/h3>\n<p>Secondo quanto sopra, l&#8217; <strong>ordine per rand()<\/strong> \u00e8 estremamente inefficiente se hai una tabella molto grande perch\u00e9 per l&#8217;ordinamento (anche se vuoi solo un elemento), verr\u00e0 invocata la funzione <strong>rand()<\/strong> ed \u00e8 quello che non facciamo volere. Possiamo migliorare quanto sopra usando due query, la prima restituisce il numero totale di post e abbiamo una funzione casuale PHP e otteniamo il record casuale usando l&#8217; istruzione <strong>limit<\/strong>.<\/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\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aggiungi un prossimo post casuale nel modello di pagina di WordPress<\/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":[896,896,720,835,1110,804,804,835,720,844,844,865,865],"tags":[1168],"class_list":{"0":"post-233310","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-codice","9":"category-sviluppatore","10":"category-guida-per-principianti","11":"category-n-a","12":"category-php-6","16":"category-tutorial","18":"category-wordpress-6","20":"tag-affiai-it"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/233310","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=233310"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/233310\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/224094"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=233310"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=233310"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=233310"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}