﻿{"id":1130,"date":"2012-09-21T21:07:55","date_gmt":"2012-09-21T19:07:55","guid":{"rendered":"http:\/\/www.flapane.com\/blog\/?p=1130"},"modified":"2014-10-22T22:04:21","modified_gmt":"2014-10-22T21:04:21","slug":"howto-guestbookcomment-system-in-ajax-e-php-con-un-pizzico-di-twitter","status":"publish","type":"post","link":"https:\/\/www.flapane.com\/blog\/2012\/09\/howto-guestbookcomment-system-in-ajax-e-php-con-un-pizzico-di-twitter\/","title":{"rendered":"HOWTO: Guestbook\/comment-system in AJAX e PHP con un pizzico di&#8230; Twitter"},"content":{"rendered":"<p style=\"text-align: justify;\"><a href=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/09\/guestbook.jpg\" rel=\"lightbox[1130]\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-1131 image\" title=\"guestbook\" src=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/09\/guestbook-530x304.jpg\" alt=\"\" width=\"530\" height=\"304\" srcset=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/09\/guestbook-530x304.jpg 530w, https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/09\/guestbook.jpg 897w\" sizes=\"(max-width: 530px) 100vw, 530px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\"><em><strong>**ENGLISH VERSION <a title=\"english version\" href=\"https:\/\/www.flapane.com\/blog\/en\/2012\/09\/howto-guestbookcomment-system-in-ajax-e-php-con-un-pizzico-di-twitter\/\">CLICK HERE<\/a>**<\/strong><\/em><\/p>\n<p style=\"text-align: justify;\">Da qualche mese ho finalmente aggiornato <a title=\"Flapane.com Guestbook\" href=\"https:\/\/www.flapane.com\/guestbook\/guestbook.php\" target=\"_blank\">il mio Guestbook (vedilo in azione)<\/a>, che risaliva a quasi un decennio fa (2003!).<\/p>\n<p style=\"text-align: justify;\">Era in HTML, non si poteva modificare se non per il colore dei caratteri, ed aveva un aspetto piuttosto &#8220;antiquato&#8221;.<\/p>\n<p style=\"text-align: justify;\">Quale migliore idea che crearne uno nuovo, sfruttando le ultime tecnologie?<\/p>\n<p style=\"text-align: justify;\">Prendendo spunto da due ottime guide (<a href=\"http:\/\/tutorialzine.com\/2010\/06\/simple-ajax-commenting-system\/\" target=\"_blank\">Tutorialzine<\/a> e <a href=\"http:\/\/www.9lessons.info\/2009\/12\/twitter-style-load-more-results-with.html\" target=\"_blank\">9Lessons<\/a>), ed aggiungendo nuove caratteristiche, ho creato un nuovo Guestbook che \u00e8 piacevole alla vista, grazie ad ombreggiature ed angoli arrotondati via CSS, e permette di mostrare un numero limitato di risultati per volta (9, nel mio caso), per non creare una pagina troppo lunga.<!--more--><br \/>\nPer caricare gli altri risultati (in questo caso, le firme lasciate nel Guestbook in passato), \u00e8 possibile cliccare su un pulsante identico a quello che in Twitter permette di aggiornare la timeline, ed i risultati pi\u00f9 vecchi appariranno dinamicamente nella pagina, con un effetto a scomparsa molto gradevole.<\/p>\n<p style=\"text-align: justify;\">Veniamo alle caratteristiche:<br \/>\n<em>&#8211; Supporta gli avatar Gravatar (a patto di inserire un indirizzo email valido)<\/em><br \/>\n<em>&#8211; E&#8217; possibile compilare automaticamente il modulo (nome, sito web, email, localit\u00e0) loggandosi tramite Facebook<\/em><br \/>\n<em>&#8211; Sistema CAPTCHA antispam, che consiste in un codice numerico casuale da inserire nell&#8217;apposita casella di testo<\/em><br \/>\n<em>&#8211; Localit\u00e0 (citt\u00e0 e paese) dell&#8217;utente aggiunta automaticamente, con tanto di bandierina del paese di provenienza aggiunta vicino ad ogni commento<\/em><br \/>\n<em>&#8211; Elenco dei 3 paesi da cui si sono ricevute pi\u00f9 firme\/commenti<\/em><br \/>\n<em>&#8211; Validazione dei campi (per controllare che l&#8217;indirizzo email o il sito web inseriti siano validi)<\/em><br \/>\n<em>&#8211; Ad ogni nuovo commento, verr\u00e0 inviata una e-mail automatica al proprietario del Guestbook, col nome ed il testo dell&#8217;utente. A quest&#8217;ultimo, verr\u00e0 inviata una mail di ringraziamenti<\/em><br \/>\n<em>&#8211; Ogni email che riceverete dopo ogni commento, conterr\u00e0 un link per cancellare, con un solo click, eventuali commenti contenenti spam<\/em> (<span style=\"color: #ff0000;\">update del 26-8-2014<\/span>)<br \/>\n<em>&#8211; Il numero totale delle firme\/commenti sar\u00e0 indicato nella pagina principale del Guestbook<\/em><br \/>\n<em>&#8211; Validazione W3C al 100%<\/em><\/p>\n<p style=\"text-align: justify;\">Andiamo a vedere la pagina principale del guestbook:<\/p>\n<span class=\"no_translate\"><\/span><\/p>\n<pre class=\"brush:php\">&lt;?php\r\n\/\/ **THIS NOTE MUST STAY INTACT FOR LEGAL USE**\r\n\/\/ Work by flapane.com (last update 26\/aug\/2014)\r\n\/\/ More details at https:\/\/www.flapane.com\/blog\/2012\/09\/howto-guestbookcomment-system-in-ajax-e-php-con-un-pizzico-di-twitter\/\r\n\/\/ AJAX commenting system\/guestbook with a Twitter-like timeline which allows to show just a few comments per time. Captcha code for anti spam purposes included. All credits for the original code go to http:\/\/tutorialzine.com\/2010\/06\/simple-ajax-commenting-system\/ and http:\/\/www.9lessons.info\/2009\/12\/twitter-style-load-more-results-with.html\r\n\/\/ I mixed up both ideas, fixed some glitches, and added a Facebook widget, icons with the flag of the countries, automatic location system, captcha code, text validation, possibility to delete SPAM with a click, automated email system for guestbook owner and user who signed it.\r\n\/\/ You need to create a Deveoper Account on Facebook, and a Developer Account on ipinfodb.com for the API keys\r\n\/\/ Also, don't forget to setup your parameters on connect.php, and your email and website address at the top of submit.php for automated emails\r\n\/\/ copypaste.js fools spambots by disabling copy\/paste function for the confirmation code textfield, so that you MUST manually digit the confirmation code\r\nsession_start(); \/\/facebook login\r\nob_start(); \/\/started buffering - avoid facebook \"headers alredy sent\" error\r\n\r\n\/\/ Error reporting:\r\nerror_reporting(E_ALL^E_NOTICE);\r\n\r\ninclude \"inc\/connect.php\";\r\ninclude \"inc\/locate_ip.php\";\r\ninclude \"inc\/comment.class.php\";\r\n\r\n$result = mysqli_query($link, \"SELECT * FROM gbook_comments ORDER BY dt ASC\"); \/\/total number of comments\r\n$num_rows = mysqli_num_rows($result); \/\/total number of comments\r\n\r\n$top_countries = mysqli_query($link, \"SELECT country_code,COUNT(*) as count FROM gbook_comments GROUP BY country_code ORDER BY count DESC LIMIT 3\"); \/\/top commenters\r\n?&gt;\r\n\r\n&lt;!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD XHTML 1.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd\"&gt;\r\n&lt;html xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\" xml:lang=\"en\"&gt;\r\n&lt;head&gt;\r\n&lt;title&gt;AJAX guestbook with Twitter-like timeline&lt;\/title&gt;\r\n&lt;link rel=\"stylesheet\" type=\"text\/css\" href=\"styles.css\" \/&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n\u00a0 &lt;div&gt;\r\n\u00a0\u00a0 \u00a0&lt;div&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;h1&gt;AJAX Guestbook! .:. &lt;? echo \"$num_rows people signed it\"; ?&gt;&lt;\/h1&gt;\r\n\u00a0\u00a0 \u00a0&lt;\/div&gt;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;div class=\"box\"&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;?php\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo \"&lt;div id='top_countries'&gt;&lt;b&gt;Top countries:&lt;\/b&gt;&lt;br \/&gt;\"; \/\/top commenters\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0while ($row = mysqli_fetch_array($top_countries))\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0{\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0$image = strtolower($row[0]) . \".png\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo \"&lt;img src='\/guestbook\/inc\/img\/flags\/$image' alt='$image user flag' \/&gt; &lt;i&gt;\".$row[1].\" firme&lt;\/i&gt;&lt;br \/&gt;\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo \"&lt;\/div&gt;\";\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0mysqli_free_result($top_countries);\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0include \"inc\/loadmore.php\"; \/\/Output the comments\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0?&gt;\r\n\r\n&lt;div id=\"addCommentContainer\"&gt;\r\n\u00a0\u00a0 \u00a0&lt;p&gt;&lt;b&gt;Firma il Guestbook! \/ Sign the Guestbook!&lt;\/b&gt;&lt;\/p&gt;\r\n\u00a0\u00a0 \u00a0&lt;? include \"inc\/fb.php\"; ?&gt;\r\n\u00a0\u00a0 \u00a0&lt;br \/&gt;&lt;br \/&gt;\r\n\u00a0\u00a0 \u00a0&lt;form id=\"addCommentForm\" method=\"post\" action=\"\"&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;div&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;label for=\"name\"&gt;Nome \/ Your Name&lt;\/label&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;input type=\"text\" name=\"name\" id=\"name\" value=\"&lt;? echo $fbname; ?&gt;\" \/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;label for=\"email\"&gt;Email \/ Your Email (nascosta \/ won't be shown)&lt;\/label&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;input type=\"text\" name=\"email\" id=\"email\" value=\"&lt;? echo $fbmail; ?&gt;\" \/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;label for=\"url\"&gt;Sito \/ Website (not required)&lt;\/label&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;input type=\"text\" name=\"url\" id=\"url\" value=\"&lt;? echo $fblink; ?&gt;\" \/&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;label for=\"location\"&gt;Citt&amp;agrave; \/ Your Location&lt;\/label&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;input type=\"text\" name=\"location\" id=\"location\" value=\"&lt;? echo $guest_ip; ?&gt;\" \/&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;input type=\"hidden\" name=\"country_code\" id=\"country_code\" value=\"&lt;? echo $guest_ccode; ?&gt;\" \/&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;label for=\"body\"&gt;Testo \/ Comment Body&lt;\/label&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;textarea name=\"body\" id=\"body\" cols=\"20\" rows=\"5\"&gt;&lt;\/textarea&gt;\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0 &lt;label for=\"security_code\"&gt;Digita questo codice \/ Enter this code: &lt;b&gt;&lt;? echo $random_code; ?&gt;&lt;\/b&gt;&lt;\/label&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;input type=\"text\" name=\"security_code\" id=\"security_code\" \/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;input name=\"randomness\" type=\"hidden\" id=\"randomness\" value=\"&lt;?php echo $random_code; ?&gt;\" \/&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;input type=\"submit\" id=\"submit\" value=\"Submit\" \/&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/div&gt;\r\n\u00a0\u00a0\u00a0 &lt;\/form&gt;\r\n&lt;\/div&gt; \r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0 \r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0 \r\n\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0&lt;\/div&gt;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0&lt;\/div&gt;\r\n\r\n&lt;script type=\"text\/javascript\" src=\"inc\/jquery.min.js\"&gt;&lt;\/script&gt;\r\n&lt;script type=\"text\/javascript\" src=\"inc\/script.js\"&gt;&lt;\/script&gt;\r\n&lt;script type=\"text\/javascript\" src=\"inc\/ajax_more.js\"&gt;&lt;\/script&gt;\r\n&lt;script type=\"text\/javascript\" src=\"inc\/copypaste.js\"&gt;&lt;\/script&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p><span class=\"no_translate\"><\/span>\n<p style=\"text-align: justify;\">Come indicato nelle note ad inizio file (da <strong>NON rimuovere<\/strong>), bisogna prima di tutto procurarsi una API key su <a href=\"http:\/\/ipinfodb.com\/register.php\" target=\"_blank\">ipinfodb<\/a> (per abilitare il riconoscimento automatico della citt\u00e0 e del Paese di provenienza dell&#8217;utente), e registrarsi su <a href=\"http:\/\/developers.facebook.com\/\" target=\"_blank\">Facebook for Developers<\/a>, per ottenere l&#8217;API key e la secret key. Per i dettagli sul funzionamento e la configurazione di Facebook for Developers, rimando a questo <a href=\"https:\/\/www.flapane.com\/blog\/2012\/06\/howto-utilizzare-le-api-di-facebook-nel-vostro-sito-web-un-esempio-pratico\/\" target=\"_blank\">vecchio post<\/a> del blog.<\/p>\n<p style=\"text-align: justify;\">Il file guestbook.php mostra il form di inserimento (nome, citt\u00e0, testo, codice CAPTCHA, ecc ecc), e va a richiamare i file secondari (connect.php per connettersi al database sql, locate_ip.php per la geolocalizzazione, fb.php per il login tramite Facebook, loadmore.php per caricare i commenti precedenti)<\/p>\n<p style=\"text-align: justify;\">Bisogner\u00e0 creare un nuovo database SQL, chiamato gbook_comments, utilizzando la riga di comando inclusa nel file table.sql disponibile per il <strong>download<\/strong> alla fine di questo post.<\/p>\n<p style=\"text-align: justify;\">Il file connect.php andr\u00e0 modificato con i vostri parametri di connessione, ovvero l&#8217;indirizzo del vostro server sql, ed i vostri username e password.<\/p>\n<p style=\"text-align: justify;\">Il file fb.php andr\u00e0 modificato, sostituendo ad ogni YOURAPPID e YOURSECRETKEY, i dati ottenuti registrandosi a Facebook for Developers.<\/p>\n<p style=\"text-align: justify;\">Il file locate_ip.php andr\u00e0 modificato, sostituendo ad YOURIPINFODBAPIKEY la propria API key ottenuta registrandosi ad ipinfodb.<\/p>\n<p style=\"text-align: justify;\">Il file submit.php andr\u00e0 modificato alle righe 9, 10, 60, 70, andando ad aggiungere il vostro indirizzo email (per essere avvisati via email quando un nuovo commento sar\u00e0 aggiunto al Guestbook), il vostro indirizzo web, ed il testo personalizzato da inviare agli utenti, una volta firmato il Guestbook.<\/p>\n<p style=\"text-align: justify;\">Il file styles.css contiene il css del Guestbook, e pu\u00f2 essere modificato a proprio piacimento.<\/p>\n<p style=\"text-align: justify;\">Dopo aver seguito questi passi, il file guestbook.php dovrebbe apparire <a href=\"https:\/\/www.flapane.com\/guestbook\/guestbook.php\" target=\"_blank\">proprio come nel Guestbook<\/a> del mio sito, e dovrebbe essere perfettamente funzionante!<\/p>\n<p style=\"text-align: justify;\">Tutto il materiale \u00e8 disponibile per il download a <strong><a title=\"Download - AJAX-PHP Guestbook\" href=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/09\/guestbook_flapane.zip\">QUESTO LINK<\/a><\/strong>.<\/p>\n<p style=\"text-align: justify;\">Se utilizzate come host Altervista, che disabilita la funzione file_get_contents, utilizzate <a href=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2012\/09\/locate_ip_altervista.zip\">questa versione del file locate_ip.php<\/a>.<\/p>\n<p style=\"text-align: justify;\">Qualsiasi commento, aggiunta e link che mostrano il vostro guestbook in funzione, sono i benvenuti!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Da qualche mese ho finalmente aggiornato il mio Guestbook (vedilo in azione), che risaliva a quasi un decennio fa (2003!).<br \/>\nQuale migliore idea che crearne uno nuovo, sfruttando le ultime tecnologie?<br \/>\nPrendendo spunto da due ottime guide, ed aggiungendo nuove caratteristiche, ho creato un nuovo Guestbook che \u00e8 piacevole alla vista, grazie ad ombreggiature ed angoli arrotondati via CSS, e permette di mostrare un numero limitato di risultati per volta (9, nel mio caso), per non creare una pagina troppo lunga.[&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[134,161,212,108,211,210,24,14,138],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts\/1130"}],"collection":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/comments?post=1130"}],"version-history":[{"count":0,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts\/1130\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/media?parent=1130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/categories?post=1130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/tags?post=1130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}