{"id":766,"date":"2020-10-12T20:25:25","date_gmt":"2020-10-12T18:25:25","guid":{"rendered":"https:\/\/vitocafazzo.it\/site_Wp\/?p=766"},"modified":"2021-07-20T18:24:27","modified_gmt":"2021-07-20T16:24:27","slug":"wp-006-tabelle-personalizzate-e-wpdb","status":"publish","type":"post","link":"https:\/\/vitocafazzo.it\/site_Wp\/2020\/10\/12\/wp-006-tabelle-personalizzate-e-wpdb\/","title":{"rendered":"WP 006 \u2013 Tabelle personalizzate e &#8220;wpdb&#8221;"},"content":{"rendered":"\n<p class=\"has-text-align-center wp-block-paragraph\"><a href=\"https:\/\/vitocafazzo.it\/site_Wp\/appunti-wordpress\/\" data-type=\"URL\" data-id=\"https:\/\/vitocafazzo.it\/site_Wp\/appunti-wordpress\/\">Torna all&#8217;elenco<strong> WordPress<\/strong><\/a><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"180\" height=\"120\" src=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/10\/APP_Wordpress.jpg\" alt=\"\" class=\"wp-image-595\"\/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">La classe wpdb<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Durante la realizzazione di questo sito, non volendo riscrivere molte delle pagine che avevo sul sito precedente, ho pensato di costruire delle <em>tabelle personalizzat<\/em>e all&#8217;interno del database di <em>WordPress<\/em> ed utilizzare la classe <strong>wpdb<\/strong> per accedere ai suoi dati.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La classe <strong>wpdb<\/strong> contiene un insieme di funzioni che possono essere utilizzate per interagire con il database WordPress e, volendo, anche con altri database.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Riferimento: <a href=\"https:\/\/codex.wordpress.org\/it:Riferimento_classi\/wpdb\" target=\"_blank\" rel=\"noreferrer noopener\">CODEX wordpress.org<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Considerazioni<\/h3>\n\n\n<ul>\n<li>Non sar\u00e0 di certo la soluzione ottimale (non mi sono ancora completamente addentrato nei <em>meandri<\/em> di WorPress), ma comunque funziona. In futuro, magari, <em>nascer\u00e0<\/em> qualcosa di pi\u00f9 <em>elegante<\/em>.&nbsp;<\/li>\n<li>La funzione <em>standard<\/em> di WordPress per effettuare ricerche non contempler\u00e0 i dati all&#8217;interno di tale tabella. Pu\u00f2 darsi che esista un modo per <em>farglielo capire<\/em>, ma per adesso <em>desisto<\/em>.<\/li>\n<li>L&#8217;inserimento degli elementi all&#8217;interno della tabella dovr\u00e0 essere effettuato con <strong>PhpMyAdmin<\/strong> o con un tool equivalente. Io, da un po&#8217; di tempo, utilizzo <a href=\"https:\/\/www.adminer.org\/\" target=\"_blank\" rel=\"noopener\">adminer-4.7.7-mysql<\/a>. Molto snello: provare per credere. Ho letto delle guide che permettono di realizzare strumenti di aggiornamento di tabelle direttamente dal pannello di controllo, ma anche qui ho <em>desistito<\/em>.<\/li>\n<\/ul>\n\n\n<h3 class=\"wp-block-heading\">Importazione\/costruzione della tabella<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La tabella che \u00e8 stata importata, rinominata <strong>my_arduino<\/strong>, (volendo se ne pu\u00f2 costruire una <em>ex novo<\/em>) presenta i seguenti campi:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"536\" height=\"269\" src=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/10\/arduino_01_tabella.png\" alt=\"\" class=\"wp-image-789\" srcset=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/10\/arduino_01_tabella.png 536w, https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/10\/arduino_01_tabella-300x151.png 300w\" sizes=\"auto, (max-width: 536px) 100vw, 536px\" \/><\/figure><\/div>\n\n\n<p>Contiene, sostanzialmente, una serie di esercizi su Arduino, dove i campi rappresentano:<\/p>\n<ul>\n<li><strong>id_esercizio<\/strong>: identificativo<\/li>\n<li><strong>t_esercizio<\/strong>: titolo dell\u2019esercizio<\/li>\n<li><strong>t_autore<\/strong>: autore<\/li>\n<li><strong>t_content<\/strong>: contenuto preformattato (indicazioni)<\/li>\n<li><strong>t_codice<\/strong>: contenuto preformattato (codice)<\/li>\n<li><strong>d_data<\/strong>: data di inserimento (inutilizzata)<\/li>\n<li><strong>b_visibile<\/strong>: campo booleano: <strong>1<\/strong> se da visuallizzare <strong>0<\/strong> altrimenti<\/li>\n<\/ul>\n\n\n<h3 class=\"wp-block-heading\">Realizzazione<\/h3>\n\n\n<p>Per realizzare quello che mi serve ho costruito due pagine:<\/p>\n<ul>\n<li><strong>Arduino &#8211; Esercizi<\/strong>: visualizza l&#8217;elenco degli esercizi (solo il titolo)<\/li>\n<li><strong>Arduino &#8211; Esercizio<\/strong>: visualizza un singolo elemento della tabella&nbsp;<\/li>\n<\/ul>\n<p><strong>N.B. <\/strong>Il codice per la costruzione delle due pagine \u00e8 relativo ad una prima stesura; in futuro potrebbe subire delle variazioni.<\/p>\n\n\n<h3 class=\"wp-block-heading\">Arduino &#8211; Esercizi<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La pagina per visualizzare la lista completa degli esercizi si avvale di uno shortcode realizzato grazie al plugin <strong>Insert PHP Code Snippet<\/strong> (<strong>XYZ PHP Code<\/strong>)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il richiamo alla pagina dell&#8217;esercizio viene effettuato, non inviando l&#8217;<strong>ID<\/strong> dell&#8217;esercizio, ma il <strong>numero<\/strong> dell&#8217;elemento (la lista degli esercizi \u00e8 numerata da <strong>1 <\/strong>a <strong>$numero_di_record<\/strong>); questo per facilitare la scrittura del menu di navigazione tra gli esercizi. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il codice richiamato dallo shortcode \u00e8 il seguente:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:php decode:true \" title=\"Shortcode: lista esercizi\">&lt;?php\n\n\/* ----------------------------------------------------\nassegnazione valori per le variabili\n----------------------------------------------------- *\/\n$elementi_per_pagina = 10;\n$numero_pagina = isset( $_GET['_P_np'] ) ? abs( (int) $_GET['_P_np'] ) : 1;\n$offset_pagina = ( $numero_pagina * $elementi_per_pagina ) - $elementi_per_pagina;\n\n\/* ----------------------------------------------------\nquery principale, query conteggio record e assegnazione variabili\n----------------------------------------------------- *\/\n$query = \t\"SELECT id_esercizio, t_esercizio, b_visibile FROM my_arduino \"\n       \t\t.\"WHERE b_visibile=1 \"\n            .\"ORDER BY id_esercizio LIMIT \"\n            .$offset_pagina.', '. $elementi_per_pagina;\n$elementi_dataset = $wpdb-&gt;get_results( $query);\n\n\/\/ Il numero dei record restituiti viene impostato in $wpdb-&gt;num_rows,\n\/\/ ma visto che si lavora con offset ne verranno restituiti comunque un\n\/\/ numero pari a $elementi_per_pagina, URGE una query di conteggio record.\n\n$numero_di_record = $wpdb-&gt;get_var( \"SELECT COUNT(*) FROM my_arduino WHERE b_visibile=1\");\n$numero_di_pagine=ceil($numero_di_record \/ $elementi_per_pagina);\n\n\/\/ ----------------------- PAGINAZIONE - Prima visualizzazione\nmy_get_paginazione(\"https:\/\/vitocafazzo.it\/site_Wp\/arduino-esercizi\", $numero_di_record, $numero_di_pagine, $numero_pagina);\n\n\/* ----------------------------------------------------\nvisualizzazione elenco\n----------------------------------------------------- *\/\necho \"&lt;\/br&gt;&lt;\/br&gt;\";\n    $n=$offset_pagina;\n    foreach ($elementi_dataset as $risultato) {\n        $n++;\n        $paginaTarget=  \"https:\/\/vitocafazzo.it\/site_Wp\/arduino-esercizio\/\";\n        $id=            $risultato-&gt;id_esercizio;\n        $titolo=        $risultato-&gt;t_esercizio;\n        echo '&lt;h2 class=\"section-title\"&gt;&lt;a  href='.$paginaTarget.'?_P_ele='.$n.'&gt;'.$n.') '.$titolo.'&lt;\/a&gt;&lt;\/h2&gt;';\n       }\necho \"&lt;\/br&gt;&lt;\/br&gt;\";\n\n\/\/ ----------------------- PAGINAZIONE - Seconda visualizzazione\nmy_get_paginazione(\"https:\/\/vitocafazzo.it\/site_Wp\/arduino-esercizi\", $numero_di_record, $numero_di_pagine, $numero_pagina);\n?&gt;<\/pre><\/div>\n\n\n\n<\/br><\/br>\n\n\n\n<p class=\"wp-block-paragraph\">Per la paginazione ho costruito la  funzione <strong>my_get_paginazione<\/strong> (pi\u00f9 <em>generale<\/em> possibile, in modo da poterla utilizzare in altre situazioni; spero di non doverci pi\u00f9 <em>mettere<\/em> mano) inserita all&#8217;interno del file <strong>functions.php<\/strong> del tema child.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:php decode:true \" title=\"Funzione my_get_paginazione\">&lt;?php\n\/********************************************************************\/\n function my_get_paginazione($pageURL, $maxREC, $maxPAG, $_P_np){\n   \t\n   \t\/* \tIl parametro \"numero di pagina\" sulla barra dell'indirizzo deve essere _P_np  \n       \tIn questa funzione viene memorizzato in $_P_np    \n      \t\n      \tViene utilizzata la classe my_paginazione definita nel CSS    \n     *\/\n\n    $primAtt=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/11\/pag_Prim_Att.png\";\n    $primDis=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/11\/pag_Prim_Dis.png\";\n    $precAtt=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/11\/pag_Prec_Att.png\";\n    $precDis=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/11\/pag_Prec_Dis.png\";\n    $succAtt=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/11\/pag_Succ_Att.png\";\n    $succDis=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/11\/pag_Succ_Dis.png\";\n    $ultiAtt=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/11\/pag_Ulti_Att.png\";\n    $ultiDis=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/11\/pag_Ulti_Dis.png\";\n\n    echo '&lt;div class=\"my_paginazione\"&gt;';\n    if ($maxREC!=0) {\n        echo 'Pagine [ ';\n        \/\/ ------------------------------------------------------ PRIMA\n        if ($_P_np==1) {    \n            echo '&lt;img border=\"0\" src=\"'.$primDis.'\" \/&gt;';\n        }   \n        else    {\n            echo '&lt;a  class=\"imgNoBgColor\"  href=\"'.$pageURL\n                    .'?_P_np=1\"&gt;'\n                    .'&lt;img border=\"0\" src=\"'.$primAtt.'\"' \n                    .'alt=\"Prima\"  title=\"Prima\" \/&gt;&lt;\/a&gt;';\n            }           \n        \/\/ ------------------------------------------------------ PRECEDENTE\n        if ($_P_np==1) {    \n            echo '&lt;img border=\"0\" src=\"'.$precDis.'\" \/&gt;';\n        }   \n        else    {\n            echo '&lt;a  class=\"imgNoBgColor\"  href=\"'.$pageURL\n                    .'?_P_np='.($_P_np-1).'\"&gt;'\n                    .'&lt;img border=\"0\" src=\"'.$precAtt.'\"' \n                    .'alt=\"Precedente\"  title=\"Precedente\" \/&gt;&lt;\/a&gt;';\n            }\n        \/\/ ------------------------------------------------------ SINGOLE PAGINE\n        for ($i=1;$i &lt;= $maxPAG;$i++){\n            if ($i!=$_P_np){    \n                echo '&lt;a  href=\"'.$pageURL\n                        .'?_P_np='.$i\n                        .'\"&gt;&lt;strong&gt;'.$i.'&amp;nbsp;&lt;\/strong&gt;&lt;\/a&gt;';\n            }           \n            else echo $i.'&amp;nbsp;';\n        }\n        \/\/ ------------------------------------------------------ SUCCESSIVA\n        if ($_P_np==$maxPAG) {  \n            echo '&lt;img border=\"0\" src=\"'.$succDis.'\" \/&gt;';\n        }   \n        else    {\n            echo '&lt;a  class=\"imgNoBgColor\"  href='.$pageURL\n                    .'?_P_np='.($_P_np+1).'\"&gt;'\n                    .'&lt;img border=\"0\" src=\"'.$succAtt.'\"' \n                    .'alt=\"Successiva\"  title=\"Successiva\" \/&gt;&lt;\/a&gt;';\n            }\n        \/\/ ------------------------------------------------------ ULTIMA\n        if ($_P_np==$maxPAG) {  \n            echo '&lt;img border=\"0\" src=\"'.$ultiDis.'\" \/&gt;';\n        }   \n        else    {\n            echo '&lt;a  class=\"imgNoBgColor\" href='.$pageURL\n                    .'?_P_np='.$maxPAG.'\"&gt;'\n                    .'&lt;img border=\"0\" src=\"'.$ultiAtt.'\"' \n                    .'alt=\"Ultima\"  title=\"Ultima\" \/&gt;&lt;\/a&gt;';\n            }           \n        \/\/------------------------------------------\n        echo '] - Elementi: &lt;strong&gt;'.$maxREC.'&lt;\/strong&gt;';\n    }\n    else\n        echo 'Nessun elemento inserito';\n \n    echo'&lt;\/div&gt;';\n   } \/\/funzione\n?&gt;<\/pre><\/div>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:css decode:true \" title=\"Classe my_paginazione definita in style.css\">div.my_paginazione{\n\tfont-family: Arial, Helvetica, sans-serif;\n\tbackground-color: #D7D9FF;\n\tcolor: #191970;\n\tfont-size: 14px;\n\tpadding: 2px;\n\tmargin-right: 5px;\n\tmargin-left: 5px;\n\ttext-align: center;\n\tborder: 3px solid;\n\tborder-color: #BDC1FF;\n\toverflow: hidden;\n}\n<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Arduino-Esercizio<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Anche per questa pagina ho realizzato uno shortcode grazie al plugin <strong>Insert PHP Code Snippet<\/strong> (<strong>XYZ PHP Code<\/strong>). Il codice richiamato \u00e8 il seguente:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:php decode:true \" title=\"Shortcode: visualizzazione singolo esercizio\">&lt;?php\n\/* ----------------------------------------------------\nControllo parametro: numero sequenziale dell'esercizio in _P_ele\n----------------------------------------------------- *\/\n$num_ele = isset( $_GET['_P_ele'] ) ? abs( (int) $_GET['_P_ele'] ) :  1;\n\/* ----------------------------------------------------\nquery conteggio record\n----------------------------------------------------- *\/\n$numero_di_record = $wpdb-&gt;get_var( \"SELECT COUNT(*) FROM my_arduino WHERE b_visibile=1\" );\n\/* ----------------------------------------------------\nquery principale\n----------------------------------------------------- *\/\n$num_ese_query=$num_ele-1;\n$query =    \"SELECT  * FROM my_arduino \"\n          \t.\"WHERE b_visibile=1 \"\n           \t.\"ORDER BY id_esercizio \"\n          \t.\"LIMIT 1 OFFSET \".$num_ese_query;\n\n$elementi_dataset = $wpdb-&gt;get_results($query);\nif ($wpdb-&gt;num_rows==0) {  \n\techo '&lt;div class=\"my_paginazione\"&gt; Esercizio inesistente &lt;\/div&gt;';\n}   \nelse {\n\t$titolo=$elementi_dataset[0]-&gt;t_esercizio;\n\t$autore=$elementi_dataset[0]-&gt;t_autore;\n\t$indicazioni=$elementi_dataset[0]-&gt;t_content;\n\t$codice= $elementi_dataset[0]-&gt;t_codice;\n\t\/* ----------------------------------------------------\n\tvisualizzazione\n\t----------------------------------------------------- *\/\n    echo '&lt;h3&gt;'.$titolo.'&lt;\/h3&gt;';\n\techo '&lt;h6 class=\"my_intestazione_info\"&gt;&lt;b&gt;Autore: &lt;\/b&gt;'.$autore.'&lt;\/h6&gt;';\n    \/\/ navigator\n    my_get_navigator(\"https:\/\/vitocafazzo.it\/site_Wp\/arduino-esercizio\", \"https:\/\/vitocafazzo.it\/site_Wp\/arduino-esercizi\" , $num_ele, $numero_di_record);\n\n\techo '&lt;\/br&gt;&lt;\/br&gt;&lt;h5 style=\"text-align:center\"&gt; Indicazioni &lt;\/h4&gt;';\n\techo '&lt;blockquote class=\"wp-block-quote\"&gt;&lt;pre&gt;'.$indicazioni.'&lt;\/pre&gt;&lt;\/blockquote&gt;';\n\n\techo '&lt;\/br&gt;&lt;h5 style=\"text-align:center\"&gt; Codice &lt;\/h4&gt;';\n\techo '&lt;blockquote class=\"wp-block-quote\"&gt;&lt;pre&gt;'.$codice.'&lt;\/pre&gt;&lt;\/blockquote&gt;';\n}\n?&gt;\n<\/pre><\/div>\n\n\n\n<\/br><br>\n\n\n\n<p class=\"wp-block-paragraph\">La navigazione tra gli esercizi avviene grazie alla funzione <strong>my_get_navigator<\/strong> definita in <strong>functions.php<\/strong> del tema child.<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:php decode:true \" title=\"Funzione my_get_navigator\">&lt;?php\n\/********************************************************************\/\n function my_get_navigator($pageURL, $pagePARENT, $num_ele, $max_ele){\n     \/*   \n            Il parametro \"numero dell'elemento\" sulla barra dell'indirizzo deve essere _P_ele  \n            In questa funzione viene memorizzato in $num_ele\n            \n            Viene utilizzata la classe my_paginazione definita nel CSS\n           \n     *\/\n\n    $precAtt=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/11\/ele_SX_Att.png\";\n    $precDis=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/11\/ele_SX_Dis.png\";\n    $pagePar=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/11\/ele_LISTA.png\";\n    $succAtt=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/11\/ele_DX_Att.png\";\n    $succDis=\"https:\/\/vitocafazzo.it\/site_Wp\/wp-content\/uploads\/2020\/11\/ele_DX_Dis.png\";\n\n\n    echo '&lt;div class=\"my_paginazione\"&gt;';\n    if ($max_ele!=0) {\n        \/\/ ------------------------------------------------------ PRECEDENTE\n        if ($num_ele==1) {    \n            echo '&lt;img border=\"0\" src=\"'.$precDis.'\" \/&gt;';\n        }   \n        else    {\n            echo '&lt;a  class=\"imgNoBgColor\"  href=\"'.$pageURL\n                    .'?_P_ele='.($num_ele-1).' \"&gt;'\n                    .'&lt;img border=\"0\" src=\"'.$precAtt.'\"' \n                    .'alt=\"Precedente\"  title=\"Precedente\" \/&gt;&lt;\/a&gt;';\n        }\n        \/\/ ------------------------------------------------------ PARENT\n   \n        echo '&lt;a  class=\"imgNoBgColor\"  href=\"'.$pagePARENT.'\"&gt;'\n                    .'&lt;img border=\"0\" src=\"'.$pagePar.'\"' \n                    .'alt=\"Lista\"  title=\"Lista\" \/&gt;&lt;\/a&gt;';\n            \n        \/\/ ------------------------------------------------------ SUCCESSIVA\n        if ($num_ele==$max_ele) {  \n            echo '&lt;img border=\"0\" src=\"'.$succDis.'\" \/&gt;';\n        }   \n        else    {\n            echo '&lt;a  class=\"imgNoBgColor\"  href='.$pageURL\n                    .'?_P_ele='.($num_ele+1).' \"&gt;'\n                    .'&lt;img border=\"0\" src=\"'.$succAtt.'\"' \n                    .'alt=\"Successivo\"  title=\"Successivo\" \/&gt;&lt;\/a&gt;';\n        }\n    }    \n    else\n        echo 'Nessun elemento inserito';\n    echo \"&lt;\/br&gt;\";\n    echo '&lt;span class=\"my_intestazione_info\"&gt; Elemento '.$num_ele.' di '.$max_ele.\" &lt;\/span&gt;\" ;\n    echo'&lt;\/div&gt;';\n   } \/\/funzione\n?&gt;<\/pre><\/div>\n\n\n\n<\/br><\/br>\n\n\n\n<h5 class=\"wp-block-heading\">Problemi<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Nella realizzazione di questa pagina ho avuto un po&#8217; di problemi per visualizzazione il codice con un <strong>highlight<\/strong>. <em>Agganciare<\/em>, in qualche modo, il plugin usato (<strong>Urvanov Syntax Highlighter<\/strong>) non \u00e8 stato possibile. Ho tentato di utilizzare altri evidenziatori di codice, tipo <a rel=\"noreferrer noopener\" href=\"https:\/\/highlightjs.org\/\" data-type=\"URL\" data-id=\"https:\/\/highlightjs.org\/\" target=\"_blank\">highlight.js<\/a>, provando ad inserire <strong>javascript<\/strong> nella pagina in diversi modi, ma non ha dato risultati (In tutti i test effettuati fuori da WordPress funziona). Per adesso mi sono arreso e ho presentato il codice a video come normale testo <em>preformattato<\/em>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Torna all&#8217;elenco WordPress La classe wpdb Durante la realizzazione di questo sito, non volendo riscrivere molte delle pagine che avevo sul sito precedente, ho pensato di costruire delle tabelle personalizzate all&#8217;interno del database di WordPress ed utilizzare la classe wpdb per accedere ai suoi dati. La classe wpdb contiene un insieme di funzioni che possono [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-766","post","type-post","status-publish","format-standard","hentry","category-wordpress"],"_links":{"self":[{"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/posts\/766","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/comments?post=766"}],"version-history":[{"count":5,"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/posts\/766\/revisions"}],"predecessor-version":[{"id":1705,"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/posts\/766\/revisions\/1705"}],"wp:attachment":[{"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/media?parent=766"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/categories?post=766"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vitocafazzo.it\/site_Wp\/wp-json\/wp\/v2\/tags?post=766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}