Il wordpress Gpci framework mette a disposizione varie funzioni e costanti php disponibili anche agli amministratori del framework. Solitamente i nomi delle funzioni disponibili a tutti non sono prefissate, mentre quelle ad uso esclusivamente interno si. Varie cose però sono cambiate quindi potrebbe non essere ancora sempre così, comunque vorrei specificare che la direzione sarà sicuramente quella.
Costanti php
Le costanti php esclusive del framework sono disponibili per essere utilizzate degli amministratori; è possibile trovare la lista completa in una pagina gutenberg nella sidebar informazioni utili e nel footer di una qualsiasi zona admin. per verificare il valore effettivo di tutte le costanti nel frontend è possibile utilizzare la costante gpci\hidden\ConstantsTable (è una stringa che rappresenta una tabella) da php oppure un blocco gutenberg php. Esempio:
echo gpci\hidden\ConstantsTable;
Questa è la lista delle costanti predefinite del framework (ma tenere presente che per il momento i nomi potrebbero cambiare in qualsiasi momento quindi verificare sempre se la costante è definita e valida):
| Costante | Formato | Definita in | Descrizione |
|---|---|---|---|
gpci\ABSPATH | stringa | /php/constants/functions.php | percorso alla root dell'installazione, copia esatta della costante ABSPATH |
gpci\privatePhpAllowed | booleano | /php/constants/functions.php | permesso ai files php che richiedono la costante (per ora solo ajax-public) |
gpci\RootRelativeUrl | stringa | /php/constants/functions.php | Uri della root di installazione |
| stringa | /php/constants/functions.php | percorso alla directory del tema child |
gpci\themeChildTempDir | stringa | /php/constants/functions.php | percorso alla directory dei files temporanei nel tema child |
gpci\themeChildLogsDir | stringa | /php/constants/functions.php | percorso alla directory dei logs nel tema child |
gpci\homeUrl | stringa | /php/constants/functions.php | url della pagina iniziale del sito senza lo slash finale |
gpci\homeUrlSlash | stringa | /php/constants/functions.php | url della pagina iniziale del sito con lo slash finale |
gpci\currentUrlQuery | stringa | /php/constants/functions.php | eventuale query string della pagina corrente |
gpci\QueryStringsArrayPost | numero intero | /php/constants/functions.php | valore della query string post nel backend, ossia l'id del post nel backend, altrimenti sarà 0 |
gpci\isAdmin | booleano | /php/constants/functions.php | definisce se la schermata/richiesta corrente è di amministrazione |
gpci\isDoingAjax | booleano | /php/constants/functions.php | definisce se la richiesta corrente è una richiesta ajax |
gpci\isDoingCron | booleano | /php/constants/functions.php | definisce se la richiesta corrente è una richiesta cron |
gpci\isDoingRest | booleano | /php/constants/functions.php | definisce se la richiesta corrente è una richiesta rest |
gpci\isGutenbergBackend | booleano | /php/constants/functions.php | definisce se la schermata/richiesta corrente è un backend gutenberg |
gpci\isGutenbergBackendPost | booleano | /php/constants/functions.php | definisce se la schermata/richiesta corrente è un backend gutenberg relativa a un post |
gpci\isGutenbergBackendSiteEditor | booleano | /php/constants/functions.php | definisce se la schermata/richiesta corrente è un backend gutenberg relativa al site editor |
gpci\isFrontend | booleano | /php/constants/functions.php | definisce se la schermata/richiesta corrente è nel frontend del sito |
gpci\postTypesNotUsers | array di stringhe | /php/constants/functions.php | lista di dei post types interni di wordpress e metabox |
gpci\postTypes | array di stringhe | /php/constants/functions.php | lista di tutti i post types, compresi quelli interni di wordpress e metabox, ottenuti dalla funzione get_post_types |
gpci\postTypesNames | array associativo | /php/constants/functions.php | come gpci\postTypes ma in formato associativo per essere utilizzati nelle metabox |
gpci\postTypesUsers | array di stringhe | /php/constants/functions.php | post types destinati agli utenti, quindi la differenza tra gpci\postTypes e gpci\postTypesNotUsers |
gpci\postTypesUsersNames | array associativo | /php/constants/functions.php | come gpci\postTypesUsersNames ma in formato associativo per essere utilizzati nelle metabox |
gpci\postTypesUsersNoAttachment | array di stringhe | /php/constants/functions.php | come gpci\postTypesUsers ma senza gli attachment |
gpci\postTypesUsersNoAttachmentNames | array associativo | /php/constants/functions.php | come gpci\postTypesUsersNoAttachment ma in formato associativo per essere utilizzati nelle metabox |
gpci\postTypesViewable | array di stringhe | /php/constants/functions.php | lista di post types visibili pubblicamente, valutati dalla funzione is_post_type_viewable |
gpci\postTypesViewableNames | array associativo | /php/constants/functions.php | come gpci\postTypesViewable ma in formato associativo per essere utilizzati nelle metabox |
gpci\postTypesViewableNoAttachment | array di stringhe | /php/constants/functions.php | come gpci\postTypesViewable ma senza gli attachment |
gpci\postTypesViewableNoAttachmentNames | array associativo | /php/constants/functions.php | come gpci\postTypesViewableNoAttachment ma in formato associativo per essere utilizzati nelle metabox |
gpci\postTypeArchives | array associativo | /php/constants/functions.php | array di coppie slug/url archivio di ogni post type |
gpci\CurrentPostType | stringa | /php/constants/functions.php | definisce il post type corrente, usabile anche nei files php |
Esiste anche una seconda tabella di costanti riservata ai componenti/moduli/plugins e ai parametri impostabili delle varie pagine impostazioni. Ricordarsi che l'attivazione segue la stessa logica spiegata nei moduli:
| Costante | Formato | Descrizione | Pagina impostazioni |
|---|---|---|---|
gpci\tweaks\included\run_wptexturize | 0/1 | Disabilita globalmente la funzione wptexturize | ottimizzazioni e tweaks |
gpci\tweaks\included\capital_p_dangit | 0/1 | Disabilita globalmente la funzione capital_p_dangit | ottimizzazioni e tweaks |
gpci\tweaks\included\disable_gutenberg | array di stringhe | Disabilita gutenberg per i post types contenuti | ottimizzazioni e tweaks |
gpci\tweaks\included\disable_xmlrpc | 0/1 | Impedisce l'accesso al file xmlrpc.php | ottimizzazioni e tweaks |
gpci\tweaks\included\disable_feeds | 0/1 | Disabilita tutti i feeds del sito | ottimizzazioni e tweaks |
gpci\tweaks\included\disable_sitemap | 0/1 | Disabilita tutte le sitemap | ottimizzazioni e tweaks |
gpci\tweaks\included\disable_wpautop | 0/1 | Disabilita globalmente la funzione wpautop | ottimizzazioni e tweaks |
gpci\tweaks\included\disable_wp_embed | 0/1 | Disabilita gli embeds automatici generati da wordpress | ottimizzazioni e tweaks |
gpci\sitemap\included\disable_users | 0/1 | Disabilita le sitemap relative gli utenti | sitemap |
gpci\sitemap\included\disable_taxonomies | 0/1 | Disabilita le sitemap relative le tassonomie | sitemap |
$GLOBALS
Tutte le GLOBALS assegnate dal framework hanno una delle seguenti strutture:
$GLOBALS['gpci']['chiave'] = VALORE$GLOBALS['gpci']['chiave']['sottochiave'] = VALORE
Per evitare conflitti l'ideale è assegnare alle vostre GLOBALS un struttura diversa come: $GLOBALS['chiavepersonalizzata']['sottochiave']. NON impostarle nel file functions.php in quanto viene eseguito prima del tema padre quindi saranno azzerate, utilizzare ad esempio i files options.php, functions-after-parent.php, un hook o il modulo aggiunte di codice.
| Globale | Formato | Descrizione |
|---|---|---|
$GLOBALS['gpci']['temp'] | qualsiasi | globale di appoggio usa e getta, utilizzabile in ogni contesto, non portarsela dietro oltre una piccolissima porzione di codice altrimenti verrà probabilmente sovrascritta. |
$GLOBALS['gpci']['temp_array'] | array di array associativi | contenitore di globali di appoggio usa e getta organizzate per contesto |
$GLOBALS['gpci']['temps'] | array di array associativi | contenitore di globali di appoggio usa e getta organizzate per contesto, sostituirà i precedenti |
| stringa | |
$GLOBALS['gpci']['shortcodes'] | array di array associativi | contenitore di globali relative gli shortcodes |
$GLOBALS['gpci']['shortcodes']['stored'] | array di array associativi | utilizzata per la memorizzazione degli shortcodes |
$GLOBALS['gpci']['foreach'] | array associativo | utilizzata nella gestione dei foreach: contiene vari sotto array a cui verranno aggiunte le informazioni sui foreach della pagina. |
$GLOBALS['gpci']['foreach']['keys'][$id] | qualsiasi | globale indice utile nel controllo dei valori delle chiavi foreach: man mano che i foreach acquisiscono chiavi popolano anche questa variabile. |
$GLOBALS['gpci']['foreach']['values'][ | qualsiasi | globale indice utile nel controllo dei valori del foreach: man mano che i foreach acquisiscono valori popolano anche questa variabile. |
$GLOBALS['gpci']['foreach'][ | numero intero | indica il numero di elementi totali in un certo foreach |
$GLOBALS['gpci']['foreach'][ | numero intero | indica un'eventuale numero di elementi per pagina in un certo foreach |
$GLOBALS['gpci']['foreach'][ | vari | chiave corrente nel ciclo di un certo foreach |
$GLOBALS['gpci']['foreach'][ | numero intero | numero dell'elemento corrente nel ciclo di un certo foreach (base 1) |
$GLOBALS['gpci']['foreach'][ | vari | valore corrente nel ciclo di un certo foreach |
$GLOBALS['custom'] | array vari | utilizzata nello shortcode globals e nel blocco gutenberg globals, è definita liberamente dagli amministratori per qualsiasi loro utilizzo. |
$GLOBALS['gpci']['shortcuts']['settings_page'] | array di stringhe | opzionale, se definita genera la lista dei collegamenti nella pagina impostazioni scorciatoie |
$GLOBALS['gpci']['shortcuts']['admin_bar_menu'] | array di array associativi | opzionale, se definita genera la lista dei collegamenti nella barra admin superiore |
$GLOBALS['gpci']['outputbuffering'] | array di array associativi | contiene il nome della funzione con relativa priorità che modificherà l'output buffering |
$GLOBALS['gpci']['AddAttributesToTags'] | array di array associativi | aggiunge attributi automaticamente ai tag specificati utilizzando l'output buffering (per ora solo html e body). Esempio:$GLOBALS['gpci']['AddAttributesToTags'][] = [E' sufficiente definire la globale, non è necessario chiamare alcuna funzione. |
$GLOBALS['gpci']['btn-templates'] | array di array misti | contiene tutte le definizioni dei templates a pulsanti da utilizzare nei vari campi del backend |
$GLOBALS['gpci']['maintenanceMode'] | booleano | definisce se attivare la modalità manutenzione soft |
$GLOBALS['gpci']['whitelist'] | array di array | contenitore delle globali inerenti |
$GLOBALS['gpci']['whitelist']['blocks'] | array di stringhe | imposta i nomi dei blocchi in whitelist |
$GLOBALS['gpci']['whitelist']['functions'] | array di stringhe | imposta i nomi delle funzioni in whitelist |
$GLOBALS['gpci']['whitelist']['userdata'] | booleano | permette a tutti di visualizzare i dati utente dopo la conversione dinamica |
$GLOBALS['gpci']['dynamic_conversion'] | array di array | contenitore delle globali inerenti la conversione dinamica |
$GLOBALS['gpci']['dynamic_conversion']['options'] | array di array | contenitore dei tipi di opzioni della conversione dinamica |
$GLOBALS['gpci']['dynamic_conversion']['options']['default'] | array associativo | definisce le opzioni predefinite della conversione dinamica |
$GLOBALS['gpci']['dynamic_conversion']['options']['custom'] | array associativo | definisce le opzioni personalizzate della conversione dinamica |
$GLOBALS['gpci']['dynamic_conversion']['comparators'] | array di array | contenitore dei comparatori per valutare le condizioni |
$GLOBALS['gpci']['dynamic_conversion'][' | array associativo | definisce i comparatori predefiniti |
$GLOBALS['gpci']['dynamic_conversion'][' | array associativo | definisce i comparatori personalizzati |
$GLOBALS['gpci']['headTags'] | array di array | contenitore di sotto array |
$GLOBALS['gpci']['headTags']['MetainfoBlockIsRendering'] | booleano | DA FARE |
$GLOBALS['gpci']['headTags']['style'] | array di stringhe | contiene css aggiuntivo generato dal blocco gutenberg head |
$GLOBALS['gpci']['headTags']['script'] | array misto (stringhe e array) | contiene codice javascript aggiuntivo generato dal blocco gutenberg head oppure definizioni di parametri della funzione wp_enqueue_script |
$GLOBALS['gpci']['headTags']['schema'] | array misto | se l'elemento dell'array è una stringa contiene codice javascript aggiuntivo (oggetto) per la definizione di dati strutturati in json; se è un array associativo contiene la struttura come array. Il blocco gutenberg head genererà il codice in base all'elemento |
$GLOBALS['gpci']['headTags']['title'] | stringa | contiene il testo generato dal blocco gutenberg head che sostituirà il tag title della pagina |
$GLOBALS['gpci']['headTags']['metarobots'] | DA FARE | |
$GLOBALS['gpci']['headTags']['meta'] | DA FARE | |
$GLOBALS['gpci']['headTags']['metarobots']['name'] | DA FARE | |
$GLOBALS['gpci']['headTags']['metarobots']['property'] | DA FARE | |
$GLOBALS['gpci']['headTags']['metarobots']['generic'] | DA FARE | |
$GLOBALS['gpci']['debug'] | booleano | abilita la modalità di visualizzazione errori |
$GLOBALS['gpci']['render'] | array associativo | contenitore delle globali inerenti, utilizzate nei filtri di rendering dei blocchi gutenberg. Queste globali vanno utilizzate nei filtri di rendering in quanto in ogni filtro vengono inizializzate all'inizio e azzerate alla fine. Il |
$GLOBALS['gpci']['render']['BlockIndex'] | numero intero | numero blocco gutenberg della pagina corrente correntemente processato tramite hook render_block |
$GLOBALS['gpci']['render']['callbacks'] | array associativo | contenitore dei callbacks aggiunti dai filtri contenuto con parametri utili e conteggio incrementale come chiave |
$GLOBALS['gpci']['render']['callbacks_count'] | numero intero | conteggio incrementale dei callbacks aggiunti dai filtri contenuto nella pagina corrente |
$GLOBALS['gpci']['render']['block_filtered_id'] | stringa | attributo ClientId del blocco gutenberg da cui parte il filtro contenuto |
$GLOBALS['gpci']['render']['current_hook'] | stringa | hook corrente selezionato nel filtro contenuto |
$GLOBALS['gpci']['render']['block_content'] | stringa | memorizza temporaneamente il contenuto html del blocco corrente |
$GLOBALS['gpci']['render']['block'] | array | memorizza temporaneamente la configurazione del blocco corrente |
$GLOBALS['gpci']['render']['instance'] | WP_Block/null | memorizza temporaneamente le configurazioni avanzate del blocco corrente |
$GLOBALS['gpci']['render']['pre_render'] | stringa/null | memorizza temporaneamente il pre_render del blocco corrente |
$GLOBALS['gpci']['render']['parsed_block'] | array associativo | memorizza temporaneamente la configurazione del blocco corrente |
$GLOBALS['gpci']['render']['parent_block'] | WP_Block/null | memorizza temporaneamente la configurazione del blocco genitore del corrente |
$GLOBALS['gpci']['render']['source_block'] | array | memorizza temporaneamente la configurazione non modificata del blocco corrente |
$GLOBALS['gpci']['render']['page'] | numero intero/0 | memorizza temporaneamente la pagina corrente del blocco query corrente |
$GLOBALS['gpci']['render']['commentId'] | stringa/0 | memorizza temporaneamente l'id del commento in una query. Il formato anche se zero è sempre una stringa |
$GLOBALS['gpci']['render']['postId'] | numero intero/0 | memorizza temporaneamente l'id del post in una query |
$GLOBALS['gpci']['render']['postType'] | stringa | memorizza temporaneamente il post type in una query |
$GLOBALS['gpci']['ajax'] | array associativo | contenitore delle globali inerenti la configurazione ajax |
$GLOBALS['gpci']['ajax']['current_args'] | array associativo | contiene gli argomenti filtrati utilizzabili inerenti la chiamata ajax corrente |
$GLOBALS['gpci']['ajax']['current_query_response'] | array di stringhe/arrays | contiene le risposte della query corrente ajax tramite pagina impostazioni. Solo ad uso interno. |
$GLOBALS['gpci']['queries'] | array associativo | contenitore delle globali inerenti le informazioni sulle queries della pagina corrente (per ora solo sulla corrente) |
$GLOBALS['gpci']['queries']['current'] | oggetto WP_Query | oggetto contenente le informazioni sulla query corrente |
$GLOBALS['gpci']['query'] | oggetto WP_Query | copia e scorciatoia alla globale $GLOBALS['gpci']['queries']['current'] |
$GLOBALS['gpci']['functions'] | array di arrays | Contenitore delle globali inerenti le funzioni php che necessitano di id personalizzati o parametri a lunga durata |
$GLOBALS['gpci']['meta_box_registry'] | array di arrays | registro di tutti i campi personalizzati ottenuto con:rwmb_get_registry( 'meta_box' )->all() |
$GLOBALS['gpci']['meta_box_fields'] | array di arrays | registro dei campi personalizzati divisi per tipo e con aggiunta di parametri personalizzati |
| array di arrays | registro dei campi personalizzati generati dal framework (vuoto per ora) |
| array di arrays | registro dei campi personalizzati generati dall'amministratore del sito |
$GLOBALS['gpci']['databases'] | array associativo | contenitore di eventuali connessioni a databases esterni |
$GLOBALS['gpci']['database_active'] | stringa | id del database attivo correntemente, default per il database predefinito |
$GLOBALS['gpci']['modules'] | array di arrays | contenitore delle globali inerenti i moduli |
$GLOBALS['gpci']['backend'] | array associativo | contenitore delle globali inerenti le funzionalità limitate al backend, ingloberà alcune globali precedenti |
Funzioni php
Le funzioni descritte di seguito sono utilizzate nel framework e disponibili agli amministratori per codice personalizzato. Queste funzioni non vanno usate nel file functions.php (in quanto viene caricato da wordpress prima del tema padre) ma piuttosto nel file functions-after-parent.php o negli auto includes. Va specificato che alcune funzioni (in fondo) sono disponibili soltanto se un certo modulo è attivato (ho notificato con un tag).
SetSmtpServer
Questa funzione serve a dichiarare quale server smtp verrà utilizzato per gli invii di posta elettronica. La funzione dichiara solo quale server utilizzare per i prossimi invii appoggiandosi completamente all'hook phpmailer_init, le email andranno spedite dalla funzione wordpress wp_mail. Probabilmente la funzione sarà utilizzata a livello globale per dichiarare soltanto un server smtp, ma è possibile dichiararla anche all'interno di un form per fare utilizzare soltanto a quel form un certo server smtp.
Parametri
- $Email - stringa di tipo email
Inserire la email precedentemente configurata nella pagina impostazioni smtp. Se inserita per errore una mail che non è stata configurata verrà utilizzato il normale invio di wordpress
Return
La funzione non ritorna nulla.
Esempi
Utilizzata nel file functions-after-parent.php, la funzione dichiara l'invio di tutte le email del sito dal server smtp relativo la mail info@gigitopc.com:
SetSmtpServer( $email='info@gigitopc.com' );
Utilizzata nel blocco form, la funzione dichiara l'invio della mail (spedita dal form stesso) dal server smtp relativo la mail azienda@gmail.com:
SetSmtpServer( $email='azienda@gmail.com' );
wp_mail( ... );
GetConfig
E' utilizzata perlopiù internamente, ottiene una globale di configurazione da una stringa che ne rappresenta il percorso. Prova ad ottenere la configurazione nel seguente ordine:
- configurazione normale (config)
- se il punto sopra risulta null (globale non impostata o condizioni non rispettate) prova ad ottenere la configurazione default (config_default)
- se anche il punto sopra risulta null il valore sarà considerato mancante (null)
Parametri
- $config - stringa rappresentante il percorso di configurazione. Se stringa vuota ritornerà sempre null. Se stringa * saranno ottenute tutte le configurazioni non default. Se stringa default saranno ottenute tutte le configurazioni default. Se stringa internal saranno ottenute tutte le configurazioni interne - default: ''
- $args - array associativo - argomenti aggiuntivi in base al tipo di configurazione:
- process_conditions - booleano - se true saranno processare le condizioni prima di definire il valore. Può essere utile usare false per vedere temporaneamente la configurazione corrente - default: true
- config_type - stringa - direct (valore diretto) oppure array_container (contenitore di arrays associativi) - default: direct
- query - array associativo - eventuale query da eseguire sui contenitori di array - default: []
- get - stringa - cosa ottenere dopo la query (come da funzione php GpciGetSubArrays) - default: *
- return - booleano - cosa ritornare (come da funzione php GpciGetSubArrays) - default: false
Return
Valore configurazione o null.
Esempi
//ottiene una configurazione semplice processata
$value = GetConfig( $config='php,hook,the_posts.php,add_post_meta' );
//ottiene una configurazione semplice non processata
$value = GetConfig( $config='php,hook,the_posts.php,add_post_meta', $args=['process_conditions'=>false] );
//ottiene una configurazione da un array di arrays associativi
$value = GetConfig( $config='php,callback,EncryptionAction', $args=[ 'config_type'=>'array_container', 'query'=>['id'=>'id_cifratura'], 'get'=>'last', 'return'=>'single'] ) ?? [];
//ottiene tutti i lavori cron che hanno assegnati id e funzione
$config_cron_jobs = GetConfig( 'php,cron,job', [ 'config_type'=>'array_container', 'query'=>[ 'id', 'function' ] ] ) ?? [];
//ottiene le azioni media che hanno id update e ifo_file
$media_actions = GetConfig( 'module,media,php,upload,actions', [ 'config_type'=>'array_container', 'query'=>[ 'id'=>[ 'IN' => ['update', 'info_file'] ] ], 'get'=>'*' ] );
SetConfig
Imposta una globale di configurazione da una stringa secondo il nuovo sistema di configurazione del framework.
Parametri
- $config - stringa rappresentante il percorso di configurazione - default: ''
- $value - qualsiasi - valore da assegnare alla configurazione, se null la configurazione sarà eliminata - default:null
- $conditions - come da funzione php CheckConditions - condizioni che saranno processate mentre si ottiene il valore - default: []
Return
True in caso di successo, false in caso di fallimento.
Esempi
//imposta l'aggiunta dei post meta ai posts della query
SetConfig( $config='php,hook,the_posts,add_post_meta', $value=true );
//imposta l'aggiunta dei post meta ai posts della query de la pagina corrente ha id 9344
SetConfig( $config='php,hook,the_posts,add_post_meta', $value=true, $conditions=[ 'wp,id', '===9344' ] );
//imposta l'aggiunta dei post meta ai posts della query come default
SetConfig( $config='default,php,hook,the_posts,add_post_meta', $value=true );
ResetConfig
Reimposta una globale di configurazione al valore default, null se non esiste.
Parametri
- $config - stringa rappresentante il percorso di configurazione. Non provare a reimpostare una configurazione default in quanto non funzionerà - default: ''
Return
True. False in caso si provi a reimpostare una configurazione default.
Esempi
//supponendo di aver usato in un file iniziale
SetConfig( $config='default,php,hook,the_posts.php,add_post_meta', $value=false );
//è possibile generare una query aggiungendo i campi personalizzati ai posts derivanti
SetConfig( $config='php,hook,the_posts.php,add_post_meta', $value=true);
$posts = QueryAction( $action='get_posts', $args=[ 'post_type'=>'page' ] );
//e infine resettare la configurazione
ResetConfig( $config='php,hook,the_posts.php,add_post_meta' );
WriteLog
Questa funzione scrive il risultato di una variabile in un file all'interno della cartella TEMACHILD/private/logs. E' molto utile per le situazioni in cui non è possibile stampare a schermo una variabile o non avrebbe senso perdere del gran tempo a capire come fare. La funzione per ora è pensata per debugging di codice ma potrebbe essere anche utilizzata per dei log di login utenti o altro. Notare che il vecchio contenuto del file verrà cancellato ogni volta che viene scritto e se il file non esiste verrà creato.
Parametri
- $data - variabile risultato
Variabile che rappresenta il risultato di una funzione - $filename - stringa - default: log.txt
Nome.estensione del file che verrà scritto o sovrascritto
Return
La funzione non ritorna nulla.
Esempi
Scrive il risultato di una costante nel file TEMACHILD/private/logs/log.txt
WriteLog( $data=gpci\mediaSizes );
Scrive il risultato di una costante nel file TEMACHILD/private/logs/log2.txt
WriteLog( $data=gpci\htaccessExists, $filename='log2.txt' );
WriteTemp
Questa funzione scrive il risultato di una variabile in un file all'interno della cartella TEMACHILD/private/temp. Serve a scrivere file temporanei che semplificano e quindi velocizzano l'esecuzione del codice (in quanto è possibile ottenere i dati che servono dal file invece che da una query nel database). Ricordarsi che i files temporanei devono poter essere cancellati in qualsiasi momento senza ripercussioni critiche sul caricamento delle pagine. Al momento è possibile solo scrivere files singoli, più avanti la funzione sarà espansa per scrivere files multipli e cancellare files o l'intera cartella.
Parametri
- $action - stringa
azione da eseguire, al momento l'unico valore possibile è writesinglefile - $name - stringa - default:''
nome del file da scrivere - $ext - stringa - default:''
estensione del file da scrivere - $data - stringa - default:''
dati da inserire nel file - $CheckIfDifferent - booleano - opzionale - default: true
controlla prima di scrivere se i dati sono diversi da quelli correnti
Return
La funzione non ritorna nulla.
Note
Se i parametri $name $ext e $data non sono specificati la funzione ritornerà senza fare nulla.
Esempi
Scrive il risultato di una costante nel file TEMACHILD/private/temp/post-types.txt, ma solo se il contenuto del file è diverso dalla costante:
WriteTemp( $action='writesinglefile', $name='post-types', $ext='txt', $data=gpci\PostTypesPublicNamesNoAtt, $CheckIfDifferent=true );
CacheData
Legge o scrive il contenuto di una variabile in un transient o in un file temporaneo (entrambi se usata per scrivere). Probabilmente verrà usata per evitare queries dispendiose a livello di prestazioni. La funzione, quando usata per leggere, cercherà il contenuto in quest'ordine:
- da un transient, mediante la funzione get_transient
- dal file temporaneo corrispondente
La funzione solitamente sarà utilizzata in un hook wordpress, esempio post_updated. Essendo però il customizer un unico punto molto importante di questo framework potrebbe essere utile scriverne tutte le cache anche all'interno dell'hook customize_save_after; così facendo basterà salvare il customizer per aggiornare tutti i files temporanei del sito.
Parametri
- $action - stringa
azione da eseguire tra le seguenti:- read - ottiene il contenuto
- write - scrive il contenuto
- delete - cancella il contenuto
- $name - stringa
nome del transient e del file temporaneo, deve essere univoco nel sito - $data - stringa - default: false
contenuto da scrivere, se action è read, non verrà utilizzato. Il contenuto verrà scritto solo se diverso da quello corrente - $ext - stringa - default: txt
estensione del file temporaneo - $expiration - numero intero - default: 0
tempo massimo in secondo di durata del transient, Ricordarsi che potrebbe scadere prima per cause esterne. Utilizzare 0 per non impostare scadenza
Return
La funzione ritorna il valore del transient oppure false se non esiste. Attenzione ai transient il cui valore è false.
Esempi
Scrive in cache i post types del sito:
$PostTypesAll = [];
$PostTypesAll = get_post_types();
if( $PostTypesAll ){ $PostTypesAll = array_keys( $PostTypesAll ); }
CacheData( $action='write', $name='post-types', $data=$PostTypesAll, $ext='txt', $expiration=0 );
Legge e inserisce in una variabile il contenuto della cache relativo i post types pubblici (false se non settato):
$PostTypesPublic = CacheData( $action='read', $name='post-types-public' );
Elimina dalla cache i post types pubblici:
CacheData( $action='delete', $name='post-types-public' );
CacheAction
Esegue un'azione relativa alle caches del sito, questa funzione sostituirà la funzione CacheData.
Parametri
- $action - stringa - azione da eseguire
Return
In base all'azione.
Lista azioni
- DeleteId
Elimina il contenuto di un post wordpress o campo personalizzato dalla cache. Questa azione non ritorna nulla. Se l'argomento id è un numero intero si suppone che sia un post id quindi verrà cancellata la cache di quel post, se invece id è stringa sarà cancellata la cache relativa dalla object cache.
$args
- id - numero intero o stringa - id del post oppure argomento $object_id della funzione rwmb_meta
Esempi
//elimina dalla cache il post id 1000
CacheAction( $action='DeleteId', $args=[ 'id'=>1000 ] );
//elimina un campo personalizzato oppure una pagina impostazioni dalle cache
CacheAction( $action='DeleteId', $args=[ 'id'=>'id_campo_personalizzato_oppure_pagina_impostazioni' ] );
Documentazione rilevante:
UrlToTitle
Questa funzione ritorna il nome dell'entità partendo da un url (esempio titolo del post, nome archivio, ecc..). Verrà espansa nel tempo, inoltre verranno aggiunti parametri per manipolazioni o per scegliere cosa ritornare in certi casi.
Parametri
- $url - stringa che rappresenta un url
url che verrà convertito a nome
Return
La funzione ritorna il nome della prima condizione soddisfatta valutando in questo ordine:
- se pagina blog personalizzata: titolo della pagina
- titolo post/pagina se trovato un id tramite la funzione url_to_postid
- nome del post type se l'url è un archivio
- frammento url invariato, calcolato dalla funzione php basename
Esempi
UrlToTitle( $url='https://www.gigitopcinformatica.it/docs/gpci-framework/' );
Risultato: Documentazione Gpci framework
Risorse collegate:
- blocco gutenberg breadcrumbs
- costante php
gpci\postTypeArchives - funzione GpciCacheData
RemoveFromLastComma
Questa funzione rimuove tutto il contenuto di una stringa dall'ultima virgola in poi, è utile ad ottenere la stringa corretta nel caso dell'utilizzo dello shortcode foreach all'interno dei dati strutturati nei template.
Parametri
- $data - stringa di ingresso
Return
La funzione ritorna la stringa senza la parte dall'ultima virgola in poi. Se non esiste alcuna virgola ritornerà la stringa originale.
Esempi
RemoveFromLastComma( $data='primovalore,secondovalore,terzovalore,' );
Risultato: primovalore,secondovalore,terzovalore
Risorse collegate:
- blocco gutenberg breadcrumbs
- costante php
gpci\postTypeArchives - funzione GpciCacheData
CheckCurrentContext (sostituire con GetContext)
Questa funzione prova a definire se la richiesta/schermata corrente è relativa a un determinato contesto (esempio se è una schermata gutenberg backend, frontend, ecc..) oppure prova a determinare tutti i contesti previsti.
Contesti
- isAdmin - se si è in una schermata di amministrazione
- isDoingAjax - se si sta eseguento una richiesta ajax
- isDoingCron - se si sta eseguento una richiesta cron
- isDoingRest - se si sta eseguento una richiesta rest
- isGutenbergBackend - se si è in una schermata gutenberg
- isGutenbergBackendPost - se si è in una schermata gutenberg relativa alla modifica di un post (non site editor)
- isGutenbergBackendSiteEditor - se si è in una schermata gutenberg nel site editor
- IsFrontend - se si è nel frontend
- isSettingPage - se si è in una pagina impostazioni
Parametri
- $context - stringa - contesto da controllare (vedere valori qui sopra) - default:''
$args - array associativo - eventuali argomenti aggiuntivi - default:[]
Return
Se specificato il contesto ritorna true o false in base al controllo, se non specificato un contesto ritorna un array contenente tutti i tipi di richiesta supportati, se specificato un contesto non supportato sempre false.
Esempi
//controlla se la schermata corrente è frontend
$check = CheckCurrentContext( 'isFrontend' );
//ritorna un array di contesti
$array = CheckCurrentContext();
Risorse collegate:
- costante php
gpci\isAdmin - costante php
gpci\isDoingAjax - costante php
gpci\isDoingCron - costante php
gpci\isDoingRest - costante php
gpci\isGutenbergBackend - costante php
gpci\isGutenbergBackendPost - costante php
gpci\isGutenbergBackendSiteEditor - costante php
gpci\isFrontend
GetContext
Questa funzione prova a controllare se la richiesta/schermata corrente è relativa a un determinato contesto (esempio se è una schermata gutenberg backend, frontend, ecc..) oppure prova ad ottenere determinare tutti i contesti previsti. Sostituisce CheckCurrentContext.
Contesti
- is_admin - se si è in una schermata di amministrazione
- is_doing_ajax - se si sta eseguento una richiesta ajax
- is_doing_cron - se si sta eseguento una richiesta cron
- is_doing_rest - se si sta eseguento una richiesta rest
- is_gutenberg - se si è in una schermata gutenberg
- is_gutenberg_post - se si è in una schermata gutenberg relativa alla modifica di un post (non site editor)
- is_gutenberg_site_editor - se si è in una schermata gutenberg nel site editor
- Is_frontend - se si è nel frontend
- is_settings_page - se si è in una pagina impostazioni, è possibile utilizzare l'argomento id per controllare anche l'id
Parametri
- $context - stringa - contesto da controllare (vedere valori qui sopra). Se utilizzato * sarà ritornato un array contenente tutti i contesti rilevati - default:''
- $args - array associativo - eventuali argomenti aggiuntivi - default:[]
Return
Booleano se specificato il contesto. Array di stringhe se utilizzato *. False se il contesto non è supportato.
Esempi
//controlla se la schermata corrente è frontend
$context = GetContext( $context='is_frontend' );
//controlla se la schermata corrente è una pagina impostazioni con id=id_pagina_impostazioni
$context = GetContext( $context='is_settings_page', $args=[ 'id'=>'id_pagina_impostazioni' ] );
//ritorna un array di contesti
$array = GetContext( $context='*' );
Risorse collegate:
- costante php
gpci\isAdmin - costante php
gpci\isDoingAjax - costante php
gpci\isDoingCron - costante php
gpci\isDoingRest - costante php
gpci\isGutenbergBackend - costante php
gpci\isGutenbergBackendPost - costante php
gpci\isGutenbergBackendSiteEditor - costante php
gpci\isFrontend
ErrorMessage
Questa funzione stampa a schermo o ritorna un messaggio di errore, ma solo se la globale php $GLOBALS['gpci']['debug'] è settata su true.
Parametri
- $origin - stringa - origine del messaggio - default: stringa vuota
- $message - stringa o array - messaggio o messaggi multipli
- $print - booleano - se stampare il messaggio a schermo con un echo/print_r oppure ritornare il messaggio - default:true
- $HtmlWrapper - booleano - genera anche l'html di errore attorno al messaggio - default:true
- $debug_backtrace - booleano - se aggiungere l'albero di provenienza al messaggio - default:true
- $disable_error_messages - booleano - se true la funzione non fa nulla (serve per passare il parametro di disabilitazione errori senza dover aggiungere condizioni esterne) - default:false
Return
La composizione del messaggio finale è: origine: messaggio (se l'origine è impostata, altrimenti solo il messaggio); la funzione ritorna il messaggio finale se il parametro print è impostato su false. Altrimenti stamperà direttamente il messaggio finale a schermo. Se il parametro HtmlWrapper è settato su true il messaggio finale sarà all'interno di un div html di errore.
Esempi
ErrorMessage( $origin='', $message='Messaggio di errore', $print=false, $HtmlWrapper=true );
Risultato:
function EsempioErrorMessage(){
//output buffering inserito solo per l'esempio, altrimenti il messaggio verrebbe stampato a inizio pagina
ob_start();
//Istruzioni regolari della funzione
ErrorMessage( $origin='Funzione '.__FUNCTION__, $message=[ 'Messaggio di errore 1', 'Messaggio di errore 2' ], $print=true );
return ob_get_clean();
}
Risultato:
Risorse collegate:
- globali php $GLOBALS['gpci']['debug'] e
$GLOBALS['gpci']['currentOrigin'] - costante magica php __FUNCTION__
- classe css predefinita gpci-error-messages
ShortcodesAction
Questa funzione serve a eseguire un'azione sugli shortcodes specificati (oppure tutti) oppure direttamente su una stringa che li contiene. Probabilmente verrà aggiornata nel tempo per aggiungere altre azioni.
Attenzione: Non utilizzare azioni che manomettono le globali inerenti per ottenere risultati sugli shortcodes a livello di blocco (esempio filtri render_block e affini) se i blocchi sono nested o interni al contenuto di un post in quanto, per l'ordine di output dei blocchi gutenberg, il risultato non sarà quello che ci si aspetta. Piuttosto operare direttamente sulle stringhe utilizzando i filtri del contenuto!
Parametri
- $action - stringa - azione da eseguire
- $shortcodes - array o stringa - array di shortcodes tags oppure stringa 'all' (l'azione sarà applicata a tutti gli shortcodes) - default:[]
- $except - booleano - inverte la condizione (non applicato a get_active e get_stored), quindi invece di applicare l'azione agli shortcode l'applicherà soltanto agli altri (proprio come: eccetto gli shortcodes specificati) - default:false
- $content - stringa - eventuale contenuto a cui applicare l'azione - default:''
Return e azioni
In base all'azione cambiano i parametri richiesti e il valore di ritorno. Le azioni disponibili sono:
get_active
Ottiene i tags degli shortcodes correntemente attivi e utilizzabili. Ritorna un array di stringhe. Esempio:
print_r( ShortcodesAction( $action='get_active' ) );
get_stored
Ottiene i tags memorizzati nella globale $GLOBALS['gpci']['shortcodes']['stored'], che quindi sono stati rimossi dagli shortcodes attivi. Ritorna un array di stringhe. Esempio:
print_r( ShortcodesAction( $action='get_stored' ) );
move_to_stored
Copia gli shortcodes specificati (oppure tutti se specificato all) con relativi callbacks nella globale poi li rimuove dalla globale originale di wordpress. Non ritorna nulla. Serve a disabilitare il rendering degli shortcodes senza eliminarli dal contenuto. Esempio:$GLOBALS['gpci']['shortcodes']['stored']
//disabilita ma salva per dopo tutti gli shortcodes
ShortcodesAction( $action='move_to_stored', $shortcodes='all' );
//disabilita solo gli shortcodes render_data e rwmb_meta
ShortcodesAction( $action='move_to_stored', $shortcodes=['render_data', 'rwmb_meta'] );
//disabilita tutti gli shortcodes eccetto render_data e rwmb_meta
ShortcodesAction( $action='move_to_stored', $shortcodes=['render_data', 'rwmb_meta'], $except=true );
move_to_wp
Copia gli shortcodes specificati (oppure tutti se specificato all) con relativi callbacks dalla globale alla globale originale di wordpress poi li rimuove dalla globale temporanea. Non ritorna nulla. Serve a riabilitare il rendering degli shortcodes e renderli quindi nuovamente disponibili. Esempio:$GLOBALS['gpci']['shortcodes']['stored']
//riabilita tutti gli shortcodes che erano stati salvati
ShortcodesAction( $action='move_to_wp', $shortcodes='all' );
remove_from_stored
Rimuove gli shortcodes specificati (oppure tutti se specificato all) dalla globale , quindi gli shortcodes non potranno più essere resi disponibili per la pagina corrente. Non ritorna nulla. Servirà molto raramente magari in casi in cui servivano fino a un certo punto della pagina poi ce ne si vuole liberare prima di rendere nuovamente disponibili i rimanenti. Esempio:$GLOBALS['gpci']['shortcodes']['stored']
//rimuove tutti gli shortcodes disabilitati
ShortcodesAction( $action='remove_from_stored', $shortcodes='all' );
remove_from_wp
Rimuove gli shortcodes specificati (oppure tutti se specificato all) dalla globale originale di wordpress come da funzione remove_shortcode, quindi gli shortcodes non potranno più essere resi disponibili per la pagina corrente (a meno che non fossero memorizzati prima). Non ritorna nulla. Serve a bloccare il rendering degli shortcodes lasciandoli nel contenuto. Se non utilizzata la globale questa è la scelta ideale. Esempio:$GLOBALS['gpci']['shortcodes']['stored']
//rimuove tutti gli shortcodes attivi
ShortcodesAction( $action='remove_from_wp', 'all');
remove
Rimuove gli shortcodes specificati (oppure tutti se specificato all) dalla globale originale di wordpress e anche dalla globale php esattamente come sopra. Non ritorna nulla. Serve a disabilitare il rendering degli shortcodes senza possibilità di recuperarli lasciandoli nel contenuto. Esempio:$GLOBALS['gpci']['shortcodes']['stored']
//rimuove tutti gli shortcodes attivi e salvati
ShortcodesAction( $action='remove', $shortcodes='all');
strip
Elimina senza lasciare tracce tutti gli shortcodes specificati (oppure tutti se specificato all) da una stringa come da funzione strip_shortcodes (quindi solo shortcodes attivi), ma ci da la possibilità di specificare quali eliminare. E' necessario utilizzare anche l'argomento $content. Ritorna il contenuto senza gli shortcodes) Può servire in vari casi ed è l'azione consigliata da utilizzare a livello blocco. Esempio:
//rimuove gli shortcodes render_data e rwmb_meta
$content = /*stringa html*/;
$content = ShortcodesAction( $action='strip', $shortcodes=[ 'render_data', 'rwmb_meta' ], $except=false, $content );
//rimuove tutti gli shortcodes eccetto render_data e rwmb_meta
$content = ShortcodesAction( $action='strip', $shortcodes=[ 'render_data', 'rwmb_meta' ], $except=true, $content );
strip_pattern
Elimina senza lasciare traccia il pattern specificato. Il pattern va inserito nell'argomento $shortcodes mentre l'argomento $except non viene utilizzato. L'argomento $content è obbligatorio in questo caso. Se $shortcodes è una stringa vuota o non è una stringa verranno eliminati tutti i pattern che potrebbero essere potenzialmente shortcodes anche se non registrati. Esempio:
//rimuove tutti i potenziali shortcodes
$content = ShortcodesAction( $action='strip_pattern', $shortcodes='', $except=false, $content );
disable
Disabilita dal rendering tutti gli shortcodes specificati (oppure tutti se specificato all) da una stringa. Semplicemente aggiunge degli span attorno alle parentesi quadre per invalidare la ricerca dalla funzione do_shortcode che quindi salterà gli shortcodes invalidati. Aggiunge delle classi alle parentesi quadre per dare la possibilità di evidenziarle. Come sopra è necessario utilizzare anche l'argomento $content. Può servire in vari casi ed' è l'azione consigliata da utilizzare a livello blocco. Esempio:
//disabilita gli shortcodes render_data e rwmb_meta
$content = /*stringa html*/;
$content = ShortcodesAction( $action='disable', $shortcodes=[ 'render_data', 'rwmb_meta' ], $except=false, $content );
//disabilita tutti gli shortcodes all'interno di un gruppo di blocchi (utilizzando i filtri contenuto)
function DisabilitaShortcodes(){
$content = $GLOBALS['gpci']['render']['block_content'];
$content = ShortcodesAction( $action='disable', $shortcodes='all', $except=false, $content );
return $content;
}
Esempi pratici
- Rimuoviamo tuttti gli shortcodes eccetto [url] dal contenuto di un post (nel frontend) utilizzando il controllo filtro contenuto:
//creiamo la funzione php
function rimuovi_shortcodes_eccetto_url(){
$content = $GLOBALS['gpci']['render']['block_content'];
$content = ShortcodesAction ( action='strip', $shortcodes=['url'], $except=true, $content );
return $content;
}
configuriamo il filtro nel template che contiene il blocco core/post-content:
- filtro: render_block
- priorità: 15
- tipo: funzione php
- valore: rimuovi_shortcodes_eccetto_url
- Rimuoviamo gli shortcodes ottenuti dallo shortcode globals che ritorna i commenti di un post, eccetto video e image:
//creiamo la funzione php e inseriamola in whitelist
function RimuoveShortcodesDaCommenti( $data ){
return $data = ShortcodesManagement( $action='strip', [ 'video', 'image' ], $except=true, $data );
}
Inseriamo la funzione nel parametro functions dello shortcode globals (che si troverà all'interno di un foreach):
[globals data="foreach,commenti,value,comment_content" functions="RimuoveShortcodesDaCommenti"]
Risorse collegate:
- globali php $GLOBALS['gpci']['shortcodes']
- hook template_redirect
- hook render_block
- funzione strip_shortcodes
BlocksAction
Questa funzione serve a eseguire un'azione partendo da un blocco gutenberg ed applicarla al blocco stesso, ai suoi blocchi interni o entrambi. E' pensata per essere utilizzata nei controlli filtri contenuto e ogni azione va utilizzata nel filtro corrispondente. Se utilizzata nel filtro sbagliato verrà visualizzato un messaggio di errore e la funzione non farà nulla.
Parametri
- $action - stringa - azione da eseguire
- $excludeCurrentBlock - booleano - se escludere il blocco corrente dall'azione - default:false
- $updateInnerblocks - booleano - se aggiornare gli innerblocks ricorsivamente (quindi tutti i blocchi interni a qualsiasi livello) - default:false
- $name - stringa - eventuale nome dell'attributo da aggiornare - default:''
- $value - stringa - eventuale valore da utilizzare in base all'azione - default:''
- $conditions - array di array associativi - condizioni da valutare a ogni blocco interno prima di applicare la modifica - default:[]
Non tutti i parametri sono utilizzati in tutte le azioni, quindi quelli non utilizzati possono essere settati su qualsiasi valore.
Condizioni
Le condizioni devono essere tutte vere e devono essere nel formato di esempio:
$conditions=[
[ 'name'=>'blockName', 'comparator'=>'==', 'value'=>'core/post-content' ],
[ 'name'=>'anchor', 'comparator'=>'!=', 'value'=>'main-primary' ]
]
Ricordare che:
- se la chiave name è blockName sarà usato il nome del blocco, altrimenti verrà cercato l'attributo
- il comparatore può essere uno qualsiasi dei comparatori del framework, dovrebbero funzionare anche quelli personalizzati
Return e azioni
Questa funzione ritorna un valore corretto in base al filtro scelto. Le azioni disponibili sono:
- copy_filter
Copia il filtro corrente ai blocchi interni e va utilizzata nel filtro render_block_data, è utilizzata internamente quando il filtro contenuto non è limitato al blocco corrente. I parametri $excludeCurrentBlock, $updateInnerblocks e $value non sono utilizzati, quindi è possibile settarli su qualsiasi valore. E' possibile utilizzarla anche manualmente ricordando di limitare il filtro corrente a una volta sola in quanto sarà la funzione stessa che penserà ad aggiornare i blocchi interni, Esempio:
//Copia il filtro corrente che imposta gli attributi JsBlock e DisableShortcodes
//la funzione si occupa di applicare lo stesso filtro a tutti i blocchi interni
//nella pratica verranno stampati in console e disabilitati gli shortcodes al blocco contenitore e tutti i blocchi interni
function CopyFilterToInnerblocks(){
$parsed_block = $GLOBALS['gpci']['render']['parsed_block'];
$parsed_block['attrs']['DisableShortcodes'] = true;
$parsed_block['attrs']['JsBlock'] = "console.log( GetCurrentBlockFromCurrentScript() )";
$GLOBALS['gpci']['render']['parsed_block'] = $parsed_block;
$parsed_block = BlocksAction( $action='copy_filter', $excludeCurrentBlock='notUsed', $updateInnerblocks='notUsed', $name=false, $value=[
'hook'=> 'render_block_data',
'priority' => 16,
'contentType' => 'function',
'content' => __FUNCTION__
] );
return $parsed_block;
}
Impostare il filtro con:
- filtro: render_block_data
- priorità: 15
- tipo: funzione php
- valore: CopyFilterToInnerblocks
- limitare al blocco corrente
Stessa cosa ma applicando una condizione:
//in questo caso i blocchi paragrafi saranno esclusi
function CopyFilterToInnerblocks(){
$parsed_block = $GLOBALS['gpci']['render']['parsed_block'];
$parsed_block['attrs']['DisableShortcodes'] = true;
$parsed_block['attrs']['JsBlock'] = "console.log( GetCurrentBlockFromCurrentScript() )";
$GLOBALS['gpci']['render']['parsed_block'] = $parsed_block;
$parsed_block = BlocksAction( $action='copy_filter', $excludeCurrentBlock='notUsed', $updateInnerblocks='notUsed', $name=false, $value=[
'hook'=> 'render_block_data',
'priority' => 16,
'contentType' => 'function',
'content' => __FUNCTION__
], $conditions=[
['name'=>'blockName', 'comparator'=>'!=', 'value'=>'core/paragraph' ]
] );
return $parsed_block;
}
- copy_attribute
Copia un attributo dal blocco su cui è utilizzato il filtro ai blocchi interni e va utilizzata nel filtro render_block_data. Con questa azione i parametri $excludeCurrentBlock e $value non sono utilizzati, quindi è possibile settarli su qualsiasi valore. Ricordare di limitare il filtro a una volta sola. Esempio:
//Copia il codice javascript a tutti i blocchi interni
function CopyAttributeToInnerblocks(){
$parsed_block = $GLOBALS['gpci']['render']['parsed_block'];
$parsed_block = BlocksAction( $action='copy_attribute', $excludeCurrentBlock='notUsed', $updateInnerblocks='notUsed', $name='JsBlock', $value='notUsed' );
return $parsed_block;
}
Impostare il filtro con:
- filtro: render_block_data
- priorità: 15
- tipo: funzione php
- valore: CopyAttributeToInnerblocks
- limitare al blocco corrente
Stessa cosa ma applicando una condizione:
//in questo caso sarà copiato l'attributo solo al blocco con id=ancora
function CopyAttributeToInnerblocks(){
$parsed_block = $GLOBALS['gpci']['render']['parsed_block'];
$parsed_block = BlocksAction( $action='copy_attribute', $excludeCurrentBlock='notUsed', $updateInnerblocks='notUsed', $name='JsBlock', $value='notUsed', $conditions=[
[ 'name'=>'anchor', 'comparator'=>'==', 'value'=>'ancora' ]
] );
return $parsed_block;
}
- edit_attribute
Modifica un attributo sui blocchi specificati e va utilizzata nel filtro render_block_data. Questa azione può essere usata in vari modi e tutti i parametri sono utilizzati, inoltre le condizioni sono verificate anche per il blocco corrente. Esempi:
Imposta codice javascript solo al blocco corrente (cioè quello a cui è applicato il controllo):
function EditAttribute(){
$parsed_block = $GLOBALS['gpci']['render']['parsed_block'];
$value = "console.log( GetCurrentBlockFromCurrentScript() )";
$parsed_block = BlocksAction( $action='edit_attribute', $excludeCurrentBlock=false, $updateInnerblocks=false, $name='JsBlock', $value );
return $parsed_block;
}
Impostare il filtro con:
- filtro: render_block_data
- priorità: 15
- tipo: funzione php
- valore: EditAttribute
- limitare al blocco corrente
Imposta codice javascript solo ai blocchi interni:
function EditAttribute(){
$parsed_block = $GLOBALS['gpci']['render']['parsed_block'];
$value = "console.log( GetCurrentBlockFromCurrentScript() )";
$parsed_block = BlocksAction( $action='edit_attribute', $excludeCurrentBlock=true, $updateInnerblocks=true, $name='JsBlock', $value );
return $parsed_block;
}
Impostare il filtro con:
- filtro: render_block_data
- priorità: 15
- tipo: funzione php
- valore: EditAttribute
- limitare al blocco corrente
Imposta codice javascript al blocco corrente e anche ai blocchi interni:
function EditAttribute(){
$parsed_block = $GLOBALS['gpci']['render']['parsed_block'];
$value = "console.log( GetCurrentBlockFromCurrentScript() )";
$parsed_block = BlocksAction( $action='edit_attribute', $excludeCurrentBlock=false, $updateInnerblocks=true, $name='JsBlock', $value );
return $parsed_block;
}
Impostare il filtro con:
- filtro: render_block_data
- priorità: 15
- tipo: funzione php
- valore: EditAttribute
- limitare al blocco corrente
Stessa cosa ma metodo alternativo:
function EditAttribute(){
$parsed_block = $GLOBALS['gpci']['render']['parsed_block'];
$value = "console.log( GetCurrentBlockFromCurrentScript() )";
$parsed_block = BlocksAction( $action='edit_attribute', $excludeCurrentBlock=false, $updateInnerblocks=false, $name='JsBlock', $value );
return $parsed_block;
}
Impostare il filtro con:
- filtro: render_block_data
- priorità: 15
- tipo: funzione php
- valore: EditAttribute
- non limitare al blocco corrente
- edit_content
Modifica il contenuto del blocco corrente e va utilizzata nei filtri pre_render_block o render_block. Questa azione supporta soltanto i blocco corrente i parametri excludeCurrentBlock, $updateInnerblocks e $name non sono sono utilizzati. Ricordare che se il filtro pre_render_block ritorna qualsiasi cosa che non sia null il corrispondente filtro render_block non viene eseguito. Esempi:
Ritorna una stringa html al posto dei blocchi che hanno codice javascript:
function PreventJsCode(){
$pre_render = $GLOBALS['gpci']['render']['pre_render'];
$value = '<h2>Codice javascript non permesso!</h2>';
$pre_render = BlocksAction( $action='edit_content', $excludeCurrentBlock='notUsed', $updateInnerblocks='notUsed', $name='notUsed', $value, $conditions=[
[ 'name'=>'JsBlock', 'comparator'=>'==', 'value'=>true ]
] );
return $pre_render;
}
Impostare il filtro con:
- filtro: pre_render_block
- priorità: 15
- tipo: funzione php
- valore: PreventJsCode
- non limitare al blocco corrente se contenitore
HtmlAction
Questa funzione serve a modificare una stringa html in base a un'azione. L'azione è sempre riferita ai bersagli della query (esattamente come un normale selettore css) che, se non specificata, verrà applicata al primo tag disponibile.
Parametri
- $action - stringa - azione da eseguire
- $html - stringa - stringa html
- $args - array associativo - argomenti per l'azione richiesta - default:[]
Return
Stringa html modificata(escluse alcune le azioni).
Lista azioni/args
Alcuni argomenti sono comuni a tutte le azioni:
- query - stringa - query in formato selezione css a cui applicare l'azione. Se * i bersagli saranno tutti i tags presenti. Se non specificata il selettore diventerà il primo tag utile - default: ''
- limit - numero intero - numero massimo di elementi a cui applicare l'azione. Se non specificato il limite massimo sarà 999999
Altri argomenti invece sono in base all'azione scelta, se gli argomenti necessari sono sono specificati verrà stampato a schermo un messaggio di errore tramite la funzione ErrorMessage.
- get_elements
Ritorna l'html che rispetta la query impostata.
$args: Nessuno.
Esempi:
//ritorna soltanto i tags h2
$block_content = HtmlAction( $action='get_elements', $block_content, $args=[ 'query'=>'h2' ] )
//ritorna l'html con id=idbersaglio
$block_content = HtmlAction( $action='remove_tag', $block_content, $args=[ 'query'=>'[id="idbersaglio"]' ] )
- remove_tag
Rimuove il tag bersaglio dalla stringa html mantenendo gli elementi interni.
$args: Nessuno.
Esempi:
//rimuove il primo tag
$block_content = HtmlAction( $action='remove_tag', $block_content, $args=[] )
//rimuove tutti i tag h2
$block_content = HtmlAction( $action='remove_tag', $block_content, $args=[ 'query'=>'h2' ] )
//rimuove i primi 3 tag h2
$block_content = HtmlAction( $action='remove_tag', $block_content, $args=[ 'query'=>'h2', 'limit'=>3 ] )
//rimuove tutti i tag h2 e h3
$block_content = HtmlAction( $action='remove_tag', $block_content, $args=[ 'query'=>'h2,h3' ] )
//per un filtro contenuto
HtmlAction( $action='remove_tag', $GLOBALS['gpci']['render']['block_content'], $args=[] )
//in conversione dinamica (funzione php)
HtmlAction,remove_tag,block_content,{query:h2,h3}
- replace_tag
Sostituisce i tags bersaglio dalla stringa html con un altro mantenendo tutto il resto.
$args:
- tag - stringa - nome del nuovo tag
Esempi:
//fa diventare il primo tag uno span
$block_content = HtmlAction( $action='replace_tag', $block_content, $args=[ 'tag'=>'span' ] );
//stessa cosa in conversione dinamica (funzione php)
HtmlAction,remove_tag,block_content,{tag:span}
//fa diventare tutti i tag h1 degli h2
$block_content = HtmlAction( $action='replace_tag', $block_content, $args=[ 'query'=>'h1', 'tag'=>'h2' ] );
- strip_all_tags
Rimuove tutti i tags html dai bersagli come da funzione php wp_strip_all_tags.
$args:
- remove_breaks - booleano - come da funzione di riferimento - default: false
- remove_entities - booleano - se rimuovere anche le entità html (come ) dopo la funzione di riferimento - default: false
Esempi:
//rimuove i tags html
$block_content = HtmlAction( $action='strip_all_tags', $block_content, $args=[ 'query'=>'*' ] );
//rimuove i tags html dalle classi colore_arancione
$block_content = HtmlAction( $action='strip_all_tags', $block_content, $args=[ 'query'=>'.colore_arancione' ] );
//stessa cosa ma rimuove anche i caratteri a capo e spaziatura multipla
$block_content = HtmlAction( $action='strip_all_tags', $block_content, $args=[ 'query'=>'.colore_arancione', 'remove_breaks'=>true ] );
//rimuove anche le entità html
$block_content = HtmlAction( $action='strip_all_tags', $block_content, $args=[ 'query'=>'.colore_arancione', 'remove_entities'=>true ] );
- convert_to_text_readable
Converte il codice html a testo semplice e leggibile. Questa azione è pensata soprattutto per inviare prompt ai modelli linguistici di intelligenze artificiali ma è utilizzabile anche per ottenere testo leggibile da stringhe html. Attenzione in quanto gli a capo saranno visualizzabili correttamente solo all'interno di un tag pre. Per ora quest'azione funziona correttamente solo con l'argomento query settato su *. Le modifiche eseguite saranno in base ai tag contenuti:
| Tag | Modifica |
|---|---|
| h1, h2, h3, h4, h5, h6, p | aggiunto un a capo alla fine |
| th, td | |+spazio (all'inizio) e spazio+| (alla fine) |
| li | - contenuto |
| input/textarea | [BLANK] |
Alla fine delle modifiche saranno compattati gli a capo/spazi multipli/| e ionfine saranno rimossi tutti i tags html rimanenti (mantenendo ovviamente i loro contenuti testuali).
$args:
- return - stringa - original (ritornerà il valore originale) o pre (ritornerà il valore preformattato all'interno di un tag pre, serve per la visualizzazione nel browser ) come da funzione di riferimento - default: original
- tags_exclude - stringa/array - tag/tags da NON modificare come da tabella - default:[]
Esempi:
//invio come prompt
$content = HtmlAction( $action='convert_to_text_readable', $content, $args=[ 'query'=>'*' ] );
//non processa gli input
$content = HtmlAction( $action='convert_to_text_readable', $content, $args=[ 'query'=>'*', 'tags_exclude'=>'input' ] );
//lettura nel browser
$content = HtmlAction( $action='convert_to_text_readable', $content, $args=[ 'query'=>'*', 'return'=>'pre' ] );
- replace_element
Sostituisce un elemento html con un'altra stringa html.
$args:
- element - stringa - codice html che sostituirà l'elemento bersaglio
Esempi:
//sostituisce il primo tag disponibile con un titolo html
$block_content = HtmlAction( $action='replace_element', $block_content, $args=[ 'element'=>'<h1>Nuovo titolo!</h1>' ] );
- remove_element
Rimuove gli elementi bersaglio.
$args: nessuno.
Esempi:
//rimuove header e footer dalla stringa html
$content = HtmlAction( $action='remove_element', $content, $args=[ 'query'=>'header,footer' ] );
- add_element
Aggiunge contenuto html alla posizione impostata. La stringa html deve essere XML valido, cioè tutti i tag devono essere ben formati e i tag vuoti devono essere auto-chiusi, altrimenti ritornerà un ErrorMessage.
$args:
- element - stringa - codice html che sarà aggiunto. Nel caso di position wrapper questo argomento non sarà specificato come codice html (vedi esempio sotto)
- position - stringa - before per aggiungere prima, after per aggiungere dopo, inside_start per aggiungere all'interno all'inizio, inside_end per aggiungere all'interno alla fine, wrapper per aggiungere un wrapper agli elementi bersaglio
Esempi:
//aggiunge un titolo html prima del primo tag disponibile
$block_content = HtmlAction( $action='add_element', $block_content, $args=[ 'element'=>'<h1>Nuovo titolo!</h1>', 'position'=>'before' ] );
//aggiunge un titolo html dopo il primo tag disponibile
$block_content = HtmlAction( $action='add_element', $block_content, $args=[ 'element'=>'<h1>Nuovo titolo!</h1>', 'position'=>'after' ] );
//aggiunge un titolo html all'interno del primo tag disponibile all'inizio
$block_content = HtmlAction( $action='add_element', $block_content, $args=[ 'element'=>'<h1>Nuovo titolo!</h1>', 'position'=>'inside_start' ] );
//aggiunge un titolo html all'interno del primo tag disponibile alla fine
$block_content = HtmlAction( $action='add_element', $block_content, $args=[ 'element'=>'<h1>Nuovo titolo!</h1>', 'position'=>'inside_end' ] );
//aggiunge un wrapper al primo tag disponibile
//in questo caso nell'argomento element va specificato il tag e opzionalmente gli attributi
$block_content = HtmlAction( $action='add_element', $block_content, $args=[ 'element'=>'div,class:classeaggiunta,id:idaggiunto', 'position'=>'wrapper' ] );
//utilizzo con conversione dinamica tramite un filtro contenuto per aggiungere un'opzione all'inizio di un select
HtmlAction,add_element,block_content,{query:select;position:inside_start;element:<option value="default">Tutte le opzioni</option>}
- replace_content
Sostituisce il contenuto con una stringa html o un testo. Attenzione all'inserimento di html all'interno di tag non contenitori in quanto produrranno ovviamente risultati non previsti (probabilmente il nuovo tag finirà sotto al precedente che rimarrà vuoto).
$args:
- content - stringa - html o testo che verrà inserito nei bersagli
Esempi:
//modifica il testo di tutti i paragrafi
$block_content = HtmlAction( $action='replace_content', $block_content, $args=[ 'query'=>'p', 'content'=>'nuovotesto' ] );
//sostituisce il contenuto dei tag div con id idbersaglio con un nuovo paragrafo
$block_content = HtmlAction( $action='replace_content', $block_content, $args=[ 'query'=>'div#idbersaglio', 'content'=>'<p>nuovo contenuto</p>' ] );
//equivalente di
$block_content = HtmlAction( $action='replace_content', $block_content, $args=[ 'query'=>'div[id="idbersaglio"]', 'content'=>'<p>nuovo contenuto</p>' ] );
- set_attribute
Imposta un attributo che, se già presente, verrà reimpostato. E' possibile anche aggiungere il valore al corrente.
$args:
- attribute - stringa - nome attributo da impostare
- value - stringa - valore attributo da impostare
- add_value - booleano - aggiunge il valore alla fine dell'attributo corrente invece di sostituirlo, verrà aggiunto anche uno spazio come separatore - default:false
Esempi:
//aggiunge l'attributo id con valore valoreid al primo tag disponibile
$block_content = HtmlAction( $action='set_attribute', $block_content, $args=[ 'attribute'=>'id', 'value'=>'valoreid' ] );
//aggiunge una classe al primo tag disponibile
$block_content = HtmlAction( $action='set_attribute', $block_content, $args=[ 'attribute'=>'class', 'value'=>'classe2', 'add_value'=>true ] );
//aggiunge una classe a tutti i tags h2
$block_content = HtmlAction( $action='set_attribute', $block_content, $args=[ 'query'=>'h2', 'attribute'=>'class', 'value'=>'classe2', 'add_value'=>true ] );
- remove_attribute
Rimuove un attributo.
$args:
- attribute - stringa - nome attributo da impostare
Esempi:
//rimuove l'attributo id dal primo tag disponibile
$block_content = HtmlAction( $action='remove_attribute', $block_content, $args=[ 'attribute'=>'id' ] );
- get_attribute
Ottiene il valore di un attributo dai selettori. Questa azione non ritorna una stringa html ma un array di stringhe (i valori).
$args:
- attribute - stringa - nome attributo da ottenere
Esempi:
//ottiene tutti i links da una lista
$links = HtmlAction( $action='get_attribute', $content, $args=[ 'query'=>'ul.classe a', 'attribute'=>'href' ] );
foreach( $links as $link ){ /*istruzioni*/ }
- check_valid_xml
Controlla se la stringa html passata è valido come elemento xml Usata internamente per verificare gli elementi in varie azioni. Questa azione non ritorna una stringa html ma true o false.
$args: nessuno.
Esempi:
$element = '<p>Paragrafo</p>';
$IsValidXml= HtmlAction( $action='check_valid_xml', $element, $args=[] );
GetGlobal
Ritorna il valore di una globale controllata. E' la funzione di riferimento della conversione dinamica tipo global.
Parametri
- $data - stringa - avanzamenti controllati nelle chiavi dell'array $GLOBALS separati da una virgola - default:''
Return
Valore dalla globale controllata.
Globali controllate
La globale ottenibile inerente il tema figlio è sempre custom, le globali ottenibili dal tema padre invece sono:
- foreach
- render
- queries
- query
Esempi
Usato in un foreach con id commenti, ritorna la data del commento:
$content = GetGlobal( $data='gpci,foreach,commenti,value,comment_date' );
Ottiene l'indice del post corrente in una query.
$content = GetGlobal( $data='gpci,query,current_post' );
//stessa cosa di
$content = GetGlobal( $data='gpci,queries,current,current_post' );
Risorse collegate:
- globali php $GLOBALS['gpci']['foreach'] e $GLOBALS['custom']
- funzione php GpciValueIterable
- conversione dinamica
GpciUrlToPostId
Ritorna il post id in base a un url.
Parametri
- url - stringa - url da cui calcolare il post id, se non passato o vuoto o non stringa verrà utilizzato l'url corrente. Possono essere passate le query strings in quanto verrano rimosse automaticamente durante il calcolo. Per ora l'utl deve iniziare sempre per http o https
Return
Post id se calcolabile, null altrimenti.
Esempi
//ritorna il post id corrente
$postId = GpciUrlToPostId();
//ritorna il post id dell'url
$postId = GpciUrlToPostId( $url='https://www.gigitopcinformatica.it/docs/gpci-framework/php/' );
FormAction
Questa funzione esegue un'azione controllata partendo da un form convertendo automaticamente i dati inviati e serve a semplificare e velocizzare le operazioni php dopo l'invio. Probabilmente in futuro verrà mappata e inserita nel blocco gutenberg gpci/form. E' importante capire che tutto parte dai nomi delle chiavi all'interno della richiesta e ogni nome va a riferirsi a un determinato campo. Nella pratica significa che quasi tutti gli argomenti dinamici saranno passati alla funzione direttamente dal form attraverso i suoi campi interni. I nomi dei campi (l'attributo name) che verranno processati sono interpretati dalla funzione in base al valore della chiave secondo questa lista:
- post_title - titolo del post - (esempio: name="post_title")
- post_content - contenuto del post
- post_excerpt - riassunto del post
- per tutti gli altri nomi: se identificato un post ID sarà cercato un campo personalizzato metabox; se non identificato un post ID non sarà verificato se esiste un campo metabox assegnato ma certe azioni (come aggiornamenti di posts) non saranno eseguite, inoltre il tipo di campo sarà definito in base al valore (numero, email, testo, ecc...). Se il campo ha assegnato il parametro personalizzato hide_from_front (attivabile anche tramite switch se è attiva l'estensione MB Frontend Submission) non sarà processato
Gli altri campi wordpress saranno aggiunti in un secondo tempo quando utili. Notare che per i campi wordpress è necessario un post ID esistente e il post type deve supportare il campo.
Parametri
- $action - stringa - azione da eseguire
- $args - array associativo - argomenti per l'azione richiesta - default:[]
Return
True se tutto procede correttamente, false in caso di errori. Attenzione in quanto alcune azioni potrebbero essere state eseguite parzialmente (esempio nell'aggiornamento di post dove l'errore è in un campo personalizzato non all'inizio dei controlli interni). Verrà comunque generato un ErrorMessage a schermo quando possibile per spiegare un eventuale errore. Se settato l'argomento OriginalResponse su true la funzione tenterà di ritornare la risposta originale della funzione collegata.
Lista azioni/args
Alcuni argomenti sono in base all'azione scelta, quelli validi per tutte le azioni sono:
- ExcludeNames - array di stringhe - se specificato: i nomi inseriti non saranno processati
- ValueValidations - array di array associativi - se specificato: i campi verranno processati soltanto se passano le validazioni (leggere sotto)
- ValueFunctions - array di array associativi - se specificato: i campi prima di essere processati saranno manipolati dalle funzioni specificate (leggere sotto)
- OriginalResponse - booleano - se true ed è possibile sarà ritornata la risposta originale della funzione collegata all'azione invece della risposta predefinita di questa funzione - può essere utile per debugging o per ottenere informazioni particolari (come l'id di un post appena creato). Questo purtroppo non è possibile per l'aggiornamento di campi personalizzati in quanto per ora la funzione rwmb_set_meta non sembra ritornare nulla.
Validazioni (ValueValidations)
Le validazioni php sono contenute in un array di array associativi (vedere esempi sotto) con le seguenti possibili chiavi:
- name - stringa - se specificato la validazione corrente sarà applicata solo al campo con quel nome, altrimenti a tutti i campi
- function - stringa - nome della funzione che validerà il valore (deve prendere in ingresso il valore obbligatoriamente) - ho aggiunto alcune eccezioni piuttosto comuni (per ora solo empty, altre verranno aggiunte)
- comparator - stringa - default: === - comparatore tra il valore/funzione e il risultato - sono ammessi anche i comparatori personalizzati.
- result - qualsiasi - risultato della comparazione - default: true - se rispettato il campo sarà validato - se è stringa ed è uguale al nome di un altro campo come risultato sarà utilizzato il valore del campo (utile per controllare ad esempio che due email inserite siano identiche )
- ReturnIfInvalid - booleano - default: false - se true: se il campo non è validato verrà stampato un ErrorMessage e la funzione ritornerà immediatamente con false senza proseguire; se false: sarà semplicemente saltato
Nota: Le validazioni saranno eseguite prima delle sanificazioni!
Esempio
'ValueValidations'=>[
//inserisce solo i valori non vuoti
[ 'function'=>'empty', 'result'=>false ],
//inserisce la partita_iva solo se maggiore di 3 lettere
[ 'name'=>'partita_iva', 'function'=>'strlen', 'comparator'=>'>', 'result'=>3 ],
//ferma la funzione se il codice fiscale è diverso dalla partita iva
[ 'name'=>'codice_fiscale', 'comparator'=>'===', 'result'=>'partita_iva', 'ReturnIfInvalid'=>true ]
]
Sanificazioni e trasformazioni (ValueFunctions)
Il parametro ValueFunctions serve a sanificare o trasformare un valore prima di eseguire l'azione (ad esempio prima di salvare il valore nel database). Anche in questo caso viene tutto definito in un array di array associativi con le seguenti possibili chiavi:
- name - stringa - se specificato la funzione corrente sarà applicata solo al campo con quel nome, altrimenti a tutti i campi
- function - stringa - nome della funzione che trasformerà il valore (deve prendere in ingresso il valore obbligatoriamente)
Esempi
//trasforma o sanifica il valore di tutti i campi
//creare la funzione
function TrasformaValore( $value ){ return 'Valore trasformato o sanificato'; }
//inserire i parametri
'ValueFunctions'=>[
[ 'function'=>'TrasformaValore' ]
]
- get_result
Ottiene i risultati di ogni valore (convertendoli a stringa) prima di eseguire l'azione e li inserisce in una lista. E' praticamente una modalità di test che può essere utile a verificare i valori effettivi prima di salvarli e testare validazioni e sanificazioni. Il form deve essere di tipo POST.
$args
Nessuno.
Esempi
//Genera Stampa la lista al posto del form
$content = FormAction( 'get_result' );
- new_post
Crea un nuovo post: il form deve essere di tipo POST. Questa azione proverà a creare un nuovo post del post type specificato e solo dopo aggiornerà i suoi campi uno alla volta. Questo significa che un eventuale errore potrebbe verificarsi solo dopo alcuni aggiornamenti.
$args
Gli argomenti sono gli stessi della funzione wp_insert_post,:
- post_type - obbligatorio - post type a cui appartiene il post da creare
- ID anche se specificato sarà sempre 0
- tutti gli altri argomenti saranno passati automaticamente all'azione update_post
Esempi
//Crea un nuovo post (post_type: ordine e post_status: published) dopo l'invio del form
$response = FormAction( 'new_post', [ 'post_type'=>'ordine', 'post_status'=>'published', 'OriginalResponse'=>true ] );
//Come sopra ma ritorna esattamente come da funzione wp_insert_post
$response = FormAction( 'new_post', [ 'post_type'=>'ordine', 'post_status'=>'published' ] );
- update_post
Aggiorna un post: il form deve essere di tipo POST. Come sopra i campi verranno aggiornati uno per uno. Notare che i campi wordpress saranno aggiornati dalle funzioni wp_update_post mentre i personalizzati tramite la funzione rwmb_set_meta.
$args
Gli argomenti sono gli stessi della funzione wp_update_post con le seguenti note:
- ID - se non specificato verrà ottenuto dalla funzione get_the_ID - in caso di fallimento la funzione si fermerà
- post_type - se non specificato verrà ottenuto dalla funzione get_post_type (è necessario per verificare il supporto del post type ai campi wordpress come titolo e riassunto) - in caso di fallimento la funzione si fermerà come spiegato sopra
Esempi
//aggiorna il post corrente
$response = FormAction( 'update_post' );
//aggiorna il post con ID 50
$response = FormAction( 'update_post', [ 'ID'=>50 ] );
- delete_post
Cancella un post: il form deve essere di tipo POST.
$args
Gli argomenti sono gli stessi della funzione wp_delete_post:
- ID - numero intero - id del post da cancellare - se non specificato negli argomenti sarà ottenuto dalla funzione get_the_ID - in caso di fallimento oppure non esiste il post id la funzione si fermerà
- force_delete - booleano - se false il post sarà spostato nel cestino (se supportato), se true il post sarà eliminato definitivamente
Esempi
//sposta nel cestino il post corrente
$response = FormAction( $action='delete_post' );
//elimina definitivamente il post corrente
$response = FormAction( $action='delete_post', $args=[ 'force_delete'=>true ] );
//sposta nel cestino il post con id 5000
$response = FormAction( $action='delete_post', $args=[ 'ID'=>5000] );
- send_email
Invia un'email: il form deve essere di tipo POST. Il formato della mail sarà per ora solo una lista contenente la label del campo e il valore. La funzione ritornerà true o false in base all'invio effettivo della mail.
$args
Gli argomenti equivalgono ai parametri della funzione wp_mail più altri:
- to - destinatario dell'invio - se stringa: sarà impostata come email il campo specificato. In caso di fallimento la funzione si fermerà
- subject - oggetto della mail
- message per ora è sempre secondo il formato (al momento una lista)
- headers - intestazioni aggiuntive della mail - deve essere un array di stringhe - verranno aggiunte alla base ['Content-Type: text/html; charset=UTF-8']
- attachments per ora non è supportato - verrà aggiunto in un secondo momento
- SmtpServer - se specificato utilizza il server smtp specificato per l'invio tramite la funzione SetSmtpServer
- MessageBefore - se specificato inserisce un messaggio prima di quello compilato automaticamente (come un'introduzione)
- MessageAfter - se specificato inserisce un messaggio dopo quello compilato automaticamente (come una firma)
- post_type - se specificato sarà possibile inserire nella mail i campi wordpress che sono supportati dal post type. Inoltre verrà ricavata la label dal campo metabox specificato. Altrimenti per la label verrà utilizzato l'attributo name del campo inviato
Esempi
//Invia una mail libera dai campi del form
$response = FormAction( $action='send_email', $args=[ 'to'=>'info@gigitopc.com', 'subject'=>'Modulo di contatto' );
//Invia una mail libera dai campi del form alla mail inserita nel campo con attributo name="email"
$response = FormAction( $action='send_email', $args=[ 'to'=>'email', 'subject'=>'Modulo di contatto' );
//Invia una mail libera dai campi del form aggiungendo una header di risposta
$response = FormAction( $action='send_email', $args=[ 'to'=>'info@gigitopc.com', 'subject'=>'Modulo di contatto', 'headers'=>[ 'Reply-To:info@gigitopc.com' ] );
//Invia una mail dai campi del form utilizzando le label originali dei campi personalizzati registrati al post id corrente
$response = FormAction( $action='send_email', $args=[ 'to'=>'info@gigitopc.com', 'subject'=>'Modulo di contatto', 'ID'=>get_the_ID() );
//Invia una mail dai campi del form utilizzando le label originali dei campi personalizzati registrati al post type ordine
$response = FormAction( $action='send_email', $args=[ 'to'=>'info@gigitopc.com', 'subject'=>'Modulo di contatto', 'post_type'=>ordine );
//Invia una mail libera dai campi del form utilizzando un server smtp personalizzato
$response = FormAction( $action='send_email', $args=[ 'to'=>'info@gigitopc.com', 'subject'=>'Modulo di contatto', 'SmtpServer'=>'info@gigitopc.com' );
//Invia una mail libera aggiungendo introduzione e firma
$response = FormAction( $action='send_email', $args=[ 'to'=>'info@gigitopc.com', 'subject'=>'Modulo di contatto', 'MessageBefore'=>'Ciao!<br>', 'MessageAfter'=>'<br><br>Firma' );
- new_comment
Inserisce un nuovo commento: il form deve essere di tipo POST. Questa azione proverà a creare un nuovo commento e solo dopo aggiornerà i suoi campi uno alla volta, eseguendo automaticamente l'azione update_comment. Questo significa che un eventuale errore potrebbe verificarsi solo dopo alcuni aggiornamenti.
$args
Gli argomenti sono gli stessi della funzione wp_insert_comment con le seguenti note:
- user_id - se non specificato verrà ottenuto dalla funzione get_current_user_id - in caso di fallimento la funzione si fermerà
- comment_post_ID - se non specificato verrà ottenuto dalla funzione get_the_ID - in caso di fallimento la funzione si fermerà
Esempi
//crea un nuovo commento per il post corrente
$ID = FormAction( 'new_comment', [ 'OriginalResponse'=>true ] );
//crea un nuovo commento e lo associa al post con id 500
$ID = FormAction( 'new_comment', [ 'OriginalResponse'=>true, 'comment_post_ID'=>500] );
- update_comment
Aggiorna un commento: il form deve essere di tipo POST. Anche in questo caso i campi verranno aggiornati uno per uno.
$args
Gli argomenti sono gli stessi della funzione wp_update_comment con le seguenti note:
- comment_post_ID - se non specificato verrà ottenuto dalla funzione php get_comment_ID - in caso di fallimento la funzione si fermerà
Esempi
//crea un nuovo commento per il post corrente
$ID = FormAction( 'new_comment', [ 'OriginalResponse'=>true ] );
//crea un nuovo commento e lo associa al post con id 500
$ID = FormAction( 'new_comment', [ 'OriginalResponse'=>true, 'comment_post_ID'=>500] );
Documentazione rilevante:
DateTimeAction
Questa funzione esegue operazioni come verifiche e conversioni su date o orari e serve a semplificare il flusso di lavoro relativo. La funzione è ancora in aggiornamento quindi per il momento non tutte le combinazioni di conversione saranno corrette.
Parametri
- action - stringa - azione che verrà eseguita dalla funzione
- args - array associativo - argomenti per l'azione richiesta - default:[]
Return
Lista azioni/args
Come negli altri casi: gli argomenti sono in base all'azione specificata e, se non specificata un'azione valida oppure ci sono argomenti mancanti verrà stampato a schermo un ErrorMessage e la funzione ritornerà null.
Per ora la lingua sarà sempre ottenuta dalla funzione get_locale (ossia la lingua del sito), in futuro verrà aggiunta la possibilità di passarla tramite argomento.
Per ora la timezone sarà sempre la corrente del sito ottenuta dalla funzione wp_timezone, in futuro verrà aggiunta la possibilità di passarla tramite argomento.
- en_US
Converte la data da un locale non inglese al formato en_US. E' utilizzata internamente in quanto le date vengono convertite all'inglese per semplificare le verifiche del formato. Questa azione fa riferimento alla lingua del sito quindi convertirà soltanto una data nella lingua del sito (se non inglese). Attenzione alle maiuscole in quanto le parole da sostituire vengono ottenute dalle traduzione interne wordpress (global $wp_locale).
$args
- date - data da convertire - deve essere un numero intero o una stringa, in caso di mancanze questa azione ritornerà una stringa vuota.
Return
Data convertita a lingua inglese o stringa vuota se la data non è valida.
Esempi
$DateToEng = DateTimeAction( 'en_US', [ 'date'=>$date ] );
- GetDateFormat
Cerca di ottenere il formato della data, ritornando il primo formato riconosciuto provando in quest'ordine:
| Ordine | Formato | Formato php | Formato HTML5 (si usa solo ISO 8601) | Valore di ritorno |
|---|---|---|---|---|
| 1 | Timestamp | Numero intero | Numero intero | timestamp |
| 2 | MySQL Esempio: 2025-12-31 | Y-m-d | YYYY-MM-DD | mysql |
| 3 | se la data è nello stesso formato default di wordpress, cioè quello configurato nella pagina di impostazioni generali e la lingua della data è la stessa del sito (configurare il separatore o verrà utilizzato uno spazio) | default | ||
| 4 | se la data è in una combinazione degli altri formati della pagina di impostazioni generali oppure uno dei formati personalizzati passati tramite l'apposito argomento. Non verrà controllata la lingua | stringa rappresentante formato php |
Non verranno controllati i formati ISO 8601 in quanto identici a MySQL per la sola data.
$args
- date - data da cui ottenere il formato - deve essere un numero intero o una stringa, in caso di mancanze verrà stampato un ErrorMessage e ritornerà false
- formats - formati personalizzati da testare - array di stringhe rappresentanti i formati personalizzati
Return
Quest'azione ritorna una stringa se il formato è identificato: timestamp, mysql, default o il formato. In caso di fallimento ritornerà false.
Esempi
//utilizzo semplice (risulterà default o j F Y)
$result = DateTimeAction( 'GetDateFormat', [ 'date'=>'11 Gennaio 2025' ] );
//utilizzo testando formati personalizzati (risulterà il primo)
$result = DateTimeAction( 'GetDateFormat', [ 'date'=>'venerdì 11.07.2025', 'formats'=>[ 'l d.m.Y', 'l-d-m-Y' ] ] );
- GetTimeFormat
Cerca di ottenere il formato dell'orario, ritornando il primo formato riconosciuto provando in quest'ordine:
- timestamp - se l'orario è un numero intero o una stringa numerica si suppone che sia un timestamp
- mysql - se l'orario è in formato H:i:s
- default - se l'orario è nello stesso formato default di wordpress, cioè quello configurato nella pagina di impostazioni generali
- stringa rappresentante formato - se l'a data'orario è in uno degli altri formati della pagina di impostazioni generali oppure uno dei formati personalizzati passati tramite l'apposito argomento
$args
- time - orario da cui ottenere il formato - deve essere un numero intero o una stringa, in caso di mancanze verrà stampato un ErrorMessage e ritornerà false
- formats - formati aggiuntivi da testare - array di stringhe rappresentanti i formati personalizzati
Return
Quest'azione ritorna una stringa se il formato è identificato: timestamp, mysql, default o il formato. In caso di fallimento ritornerà false.
Esempi
//utilizzo semplice (risulterà default o G:i)
$result = DateTimeAction( 'GetTimeFormat', [ 'time'=>'23:15' ] );
- GetDateTimeFormat
Cerca di ottenere il formato della data con orario, ritornando il primo formato riconosciuto provando in quest'ordine:
| Ordine | Formato | Formato php | Formato HTML5 (si usa solo ISO 8601) | Valore di ritorno |
|---|---|---|---|---|
| 1 | Timestamp | Numero intero | Numero intero | timestamp |
| 2 | MySQL Esempio: 2025-12-31 10:00:00 | Y-m-d H:i:s | YYYY-MM-DD HH:MM:SS | mysql |
| 3 | ISO 8601 Esempio: 2025-12-31T10:00:00 | Y-m-d\TH:i:s | YYYY-MM-DDTHH:MM:SS | iso8601 |
| 4 | ISO 8601 con offset Esempio: 2025-12-31T10:00:00+01:00 | Y-m-d\TH:i:sP | YYYY-MM-DDTHH:MM:SS±HH:MM | iso8601_offset |
| 5 | ISO 8601 con UTC Esempio: 2025-12-31T10:00:00Z | Y-m-d\TH:i:s\Z | YYYY-MM-DDTHH:MM:SSZ | iso8601_utc |
| 6 | se la data con orario è nello stesso formato default di wordpress, cioè quelli configurati nella pagina di impostazioni generali (sia data che ora) e la lingua della data è la stessa del sito (configurare il separatore o verrà utilizzato uno spazio) | default | ||
| 7 | se la data con orario è in una combinazione degli altri formati della pagina di impostazioni generali (prima data poi orario) oppure uno dei formati personalizzati passati tramite l'apposito argomento. Non verrà controllata la lingua | stringa rappresentante formato php |
$args
- datetime - data con orario da cui ottenere il formato - deve essere un numero intero o una stringa, in caso di mancanze verrà stampato un ErrorMessage e ritornerà false
- formats - formati personalizzati da testare - array di stringhe rappresentanti i formati personalizzati. Attenzione in quanto per ora nella separazione tra data e ora vari caratteri come | lettere o parole non faranno ritornare all'azione il formato corretto (che quindi ritornerà false)
Return
Quest'azione ritorna una stringa se il formato è identificato. In caso di fallimento ritornerà false.
Esempi
//utilizzo semplice (risulterà default o j F Y G:i")
$result = DateTimeAction( 'GetDateTimeFormat', [ 'datetime'=>'12 Luglio 2025 13:49' ] );
//formato personalizzato
$result = DateTimeAction( 'GetDateTimeFormat', [ 'date'=>'sabato 12 Luglio 2025, 13:49', 'formats'=>[ 'l j F Y, G:i' ] ] );
- ConvertDateFormat
Cerca di convertire una data da un formato a un altro. Semplicemente utilizza l'azione GetDateFormat per riconoscere il formato e genera la stessa data utlizzando la funzione wp_date. Se l'azione non riesce a riconoscere il formato ritornerà una stringa vuota.
$args
- date - data da convertire - deve essere un numero intero o una stringa, in caso di mancanze verrà stampato un ErrorMessage e ritornerà una stringa vuota
- date_format - formato wordpress in cui la data sarà generata - se non specificato sarà utilizzata l'impostazione predefinita del sito
Return
Quest'azione ritorna sempre una stringa.
Esempi
//converte la data al formato predefinito del sito
$result = DateTimeAction( 'ConvertDateFormat', [ 'date'=>'2017-06-15' ] );
//converte una data da timestamp a formato mysql
$timestamp = 1745179767;
DateTimeAction( 'ConvertDateFormat', [ 'date'=>$timestamp, 'date_format'=>'Y-m-d' ] );
//converte una data all'anno corrispondente
$result = DateTimeAction( 'ConvertDateFormat', [ 'date'=>'2017-06-15', 'date_format'=>'Y' ] );
- ConvertTimeFormat
Cerca di convertire un'orario da un formato a un altro. Semplicemente utilizza l'azione GetTimeFormat per riconoscere il formato e genera lo stesso orario utilizzando la funzione wp_date. Se l'azione non riesce a riconoscere il formato ritornerà una stringa vuota.
$args
- time - orario da convertire - deve essere un numero intero o una stringa, in caso di mancanze verrà stampato un ErrorMessage e ritornerà una stringa vuota
- time_format - formato wordpress in cui l'orario sarà generato - se non specificato sarà utilizzata l'impostazione predefinita del sito
Return
Quest'azione ritorna sempre una stringa.
Esempi
//converte l'orario al formato predefinito del sito
$result = DateTimeAction( 'ConvertTimeFormat', [ 'time'=>'14:23:44' ] );
//converte un orario al mattino/pomeriggio corrispondente (AM o PM)
$result = DateTimeAction( 'ConvertDateFormat', [ 'time'=>'14:23:44', 'date_format'=>'A' ] );
- ConvertDateTimeFormat
Cerca di convertire un formato data con orario da un formato a un altro. Semplicemente utilizza l'azione GetDateTimeFormat per riconoscere il formato e genera la stessa data con orario utilizzando la funzione wp_date. Se l'azione non riesce a riconoscere il formato ritornerà una stringa vuota.
$args
- datetime - data con orario da convertire - deve essere un numero intero o una stringa, in caso di mancanze verrà stampato un ErrorMessage e ritornerà una stringa vuota
- datetime_format - formato wordpress in cui sarà generata la data con orario - se non specificato sarà utilizzata l'impostazione predefinita del sito (data e ora saranno separati da uno spazio) - è possibile specificare il formato di uscita come una delle seguenti stringhe semplificate (che verrà automaticamente convertita al formato corretto): timestamp, mysql, iso8601_offset o iso8601_utc
- timezone - eventuale fuso orario da applicare in formato stringa - default: impostazione del sito
Return
Quest'azione ritorna sempre una stringa.
Esempi
//converte al formato predefinito del sito
$result = DateTimeAction( 'ConvertDateTimeFormat', [ 'datetime'=>'2008-11-11 13:23:44' ] );
//stessa cosa ma con il fuso orario di New York
$result = DateTimeAction( 'ConvertDateTimeFormat', [ 'datetime'=>'2008-11-11 13:23:44', 'timezone'=>'America/New_York' ] );
//converte una data con orario da timestamp a formato mysql
$timestamp = 1745179767;
DateTimeAction( 'ConvertDateFormat', [ 'datetime'=>$timestamp, 'datetime_format'=>'Y-m-d H:i' ] );
//oppure
DateTimeAction( 'ConvertDateFormat', [ 'datetime'=>$timestamp, 'datetime_format'=>'mysql' ] );
//converte a un formato personalizzato
$result = DateTimeAction( 'ConvertDateTimeFormat', [ 'datetime'=>'2008-11-11 13:23:44', 'datetime_format'=>'l, j F Y' ] );
Documentazione rilevante:
HelperAction
Questa funzione esegue delle operazioni comuni a certe tipologie di sito per ritornare un'informazione, eseguire un controllo o un'azione semplice. E' pensata per essere utilizzata nei blocchi gutenberg (esempio nelle condizioni di rendering) o nei campi personalizzati e serve a evitare di scrivere delle funzioni php codice php per controlli che dovrebbero essere veloci e semplici. Per ora è sperimentale e verrà portata avanti o rimossa in base all'effettiva utilità.
Parametri
- action - stringa - azione che verrà eseguita dalla funzione
- args - array associativo - argomenti per l'azione richiesta - default:[]
Return
In base all'azione. Null in caso di errori.
Lista azioni/args
Come negli altri casi: gli argomenti sono in base all'azione specificata e, se non specificata un'azione valida oppure ci sono argomenti mancanti verrà stampato a schermo un ErrorMessage e la funzione ritornerà null.
- CurrentUserIsCurrentPostAuthor
Controlla se l'utente corrente è l'autore del post corrente. Ritorna true o false in base al controllo.
$args
Nessuno.
Esempi
//utilizzo della funzione in php
$result = HelperAction( $action='CurrentUserIsCurrentPostAuthor' );
//utilizzo della funzione in conversione dinamica (funzione php)
HelperAction,CurrentUserIsCurrentPostAuthor
- CurrentUserIsCurrentCommentAuthor
Controlla se l'utente corrente è l'autore del commento corrente. Ritorna true o false in base al controllo.
$args
Nessuno.
Esempi
//utilizzo della funzione in php
$result = HelperAction( $action='CurrentUserIsCurrentCommentAuthor' );
//utilizzo della funzione in conversione dinamica (funzione php)
HelperAction,CurrentUserIsCurrentCommentAuthor
- GetLastCommentId
Ottiene l'id dell'ultimo commento relativo al post corrente convertito a numero intero. Ritorna false se non ci sono commenti.
$args
Nessuno.
Esempi
//utilizzo della funzione in php
$result = HelperAction( $action='GetLastCommentId' );
//utilizzo della funzione in conversione dinamica (funzione php)
HelperAction,GetLastCommentId
SanitizeAction
Questa funzione esegue una o più sanificazioni su un contenuto e serve a sanificare in un colpo solo array interi ma anche stringhe con sanificazioni multiple . La funzione è sempre ricorsiva, quindi verrà applicata a tutti i sotto array a meno che non siano limitate le chiavi con l'apposito argomento.
Parametri
- action - stringa/array - azione che verrà eseguita dalla funzione, sono consentite azioni multiple se è un array: verranno eseguite nell'ordine di inserimento mantenendo gli stessi argomenti
- args - array associativo - argomenti per l'azione richiesta - default:[]
- content - stringa o array - contenuto da sanificare - default:''
Return
Contenuto sanificato.
Lista azioni/args
Anche in questo caso gli argomenti sono in base all'azione specificata e, se non specificata un'azione valida oppure ci sono argomenti mancanti verrà stampato a schermo un ErrorMessage e la funzione ritornerà il contenuto originale. Gli argomenti comuni sono:
- LimitKeys - array di stringhe oppure stringa di valori separati da virgola - se specificato la sanificazione sarà applicata soltanto ai contenuti all'interno delle chiavi inserite (vedere esempi) - default:[] - note: per ora questo argomento sarà applicato soltanto alle sanificazioni di tipo EscapeHtml, UnescapeHtml, StripTags e StripShortcodes
- GpciCurrentKey - utilizzata internamente per passare ai sotto array la chiave corrente nel caso si limitino le chiavi
- EscapeHtml
Ritorna il contenuto passato attraverso la funzione esc_html. Serve a mostrare o salvare l'html come contenuto testuale invece di essere eseguito dal browser. Protegge da codice malevolo (come script), previene problemi di sicurezza (XSS) ed evita il rendering dei blocchi gutenberg dai commenti html.
$args aggiuntivi
Nessuno.
Esempi
//utilizzo della funzione in php
$content = SanitizeAction( $action='EscapeHtml', $args=[], $content );
//utilizzo della funzione in conversione dinamica (funzione php)
SanitizeAction,EscapeHtml,[],$block_content
//in php dopo l'invio di un form limita le chiavi a cui verrà applicata la sanificazione
$_POST = SanitizeAction( $action='EscapeHtml', $args=[ 'LimitKeys'=>'post_title,post_content' ], $_POST );
- UnescapeHtml
Ritorna il contenuto passato attraverso la funzione htmlspecialchars_decode. Inverte l'azione precedente.
$args aggiuntivi
Nessuno.
Esempi
//utilizzo della funzione in php
$content = SanitizeAction( $action='UnescapeHtml', $args=[], $content );
- StripTags
Ritorna il contenuto passato attraverso la funzione wp_strip_all_tags. Serve a mostrare o salvare solo il contenuto testuale senza alcun html nè formattazione. La maggior parte dei dati provenienti da form utente dovrebbe essere sanificata con questa funzione.
$args aggiuntivi
- remove_breaks - rimuove gli a capo dal contenuto - default:false
Esempi
//utilizzo della funzione in php
$content = SanitizeAction( $action='StripTags', $args=[], $content );
//rimuove anche gli a capo
$content = SanitizeAction( $action='StripTags', $args=[ 'remove_breaks'=>true ], $content );
- StripShortcodes
Ritorna il contenuto passato attraverso la funzione strip_shortcodes. Serve a rimuovere gli shorcodes attivi inseriti dagli utenti. Probabilmente è meglio sanificare vari form utente anche con questa azione, ovviamente in base al contesto.
$args aggiuntivi
Nessuno.
Esempi
//utilizzo della funzione in php
$content = SanitizeAction( $action='StripShortcodes', $args=[], $content );
Se il contenuto è una email valida controllata dalla funzione is_email sanifica la mail in base al contesto specificato.
$args aggiuntivi
- context - se db il contenuto passerà attraverso la funzione sanitize_email, se display invece attraverso esc_html
Esempi
//sanifica l'email per il salvataggio
$content = SanitizeAction( $action='email', $args=[], $content );
//sanifica l'email per mostrarla nel frontend
$content = SanitizeAction( $action='email', $args=[ 'context'=>'display' ], $content );
//stessa cosa in conversione dinamica (funzione php)
SanitizeAction,email,[context:display],$block_content,
- url
Se il contenuto è un url valido controllato dalla funzione wp_http_validate_url sanifica l'url in base al contesto specificato.
$args aggiuntivi
- context - l'url sarà sanificato tramite la funzione esc_url passando direttamente l'argomento $context all'argomento $_context della funzione
Esempi
//sanifica l'url per il salvataggio
$content = SanitizeAction( $action='url', $args=[], $content );
//sanifica l'url per mostrarlo nel frontend
$content = SanitizeAction( $action='url', $args=[ 'context'=>'display' ], $content );
//stessa cosa in conversione dinamica (funzione php)
SanitizeAction,url,[context:display],$block_content
- text
Se il contenuto è una stringa controllato dalla funzione is_string sanifica il testo in base al contesto specificato. Va utilizzato nei testi senza a capo.
$args aggiuntivi
- context - se db il contenuto passerà attraverso la funzione sanitize_text_field, se display invece attraverso esc_html
Esempi
//sanifica il testo per il salvataggio
$content = SanitizeAction( $action='text', $args=[], $content );
//sanifica il testo per mostrarlo nel frontend
$content = SanitizeAction( $action='text', $args=[ 'context'=>'display' ], $content );
//stessa cosa in conversione dinamica (funzione php)
SanitizeAction,text,[context:display],$block_content
- textarea
Se il contenuto è una stringa controllato dalla funzione is_string sanifica il testo in base al contesto specificato. Va utilizzato nei testi in cui si vuole preservare gli a capo.
$args aggiuntivi
- context - se db il contenuto passerà attraverso la funzione sanitize_textarea_field, se display invece attraverso esc_html
Esempi
//sanifica il testo per il salvataggio
$content = SanitizeAction( $action='textarea', $args=[], $content );
//sanifica il testo per mostrarlo nel frontend
$content = SanitizeAction( $action='textarea', $args=[ 'context'=>'display' ], $content );
//stessa cosa in conversione dinamica (funzione php)
SanitizeAction,textarea,[context:display],$block_content
- $_FILES
Se il contenuto è un array rappresentante un caricamento da un form lo sanifica. L'array deve contenere esattamente le chiavi name, full_path, type, tmp_name, error e size inoltre name, full_path e type devono essere stringhe.
$args aggiuntivi
Nessuno.
Esempi
//sanifica tutti i files caricati
$_FILES = SanitizeAction( $action='$_FILES', $args=[], $_FILES );
- key
Sanifica le chiavi in un array invece dei valori tramite la funzione sanitize_key. E' possibile anche sanificare direttamente una stringa.
$args
Nessuno.
Esempi
//sanifica tutte le chiavi in un array
$content = SanitizeAction( $action='key', $args=[], $content );
- wp_kses_post
Sanifica il contenuto tramite la funzione wp_kses_post. Serve a lasciare nel contenuto soltanto i tags sicuri.
$args aggiuntivi
Nessuno.
Esempi
$content = SanitizeAction( $action='wp_kses_post', $args=[], $content );
- auto
Questa azione serve a eseguire una prima sanificazione di sicurezza e andrebbe applicata nella maggior parte dei casi agli input utente. Nella pratica applica sanificazioni multiple in quest'ordine:
- key
- $_FILES
- url
- wp_kses_post
$args aggiuntivi
- context - viene passato direttamente alla sanificazione da eseguire - default:db
Esempi
//sanifica un array automaticamente
$content = SanitizeAction( $action='auto', $args=[], $content );
//stessa cosa in conversione dinamica (funzione php)
SanitizeAction,auto,[],$block_content
- FieldName
Questa azione sanifica form e input utente modificando ogni campo in base al nome in modo analogo alla funzione FormAction. E' utilizzata perlopiù internamente per la sanifica dei form. Funzionerà quindi solo con array associativi, sanificando in questo modo:
- post_title - sanitize_text_field
- post_excerpt - sanitize_textarea_field
- post_content - wp_kses_post
In tutti gli altri casi, se trovato campo personalizzato con lo stesso id del nome inviato, si suppone che sia un campo personalizzato. Se definita una funzione di sanifica verrà eseguita quella sanifica, altrimenti il valore sarà sanificato in base al tipo di campo (solo per i campi supportati).
$args aggiuntivi
- object_id - serve a passare correttamente gli argomenti $old_value e $object_id alla funzione di sanificazione metabox, che altrimenti saranno settati su false. Inserire un id numerico per i campi posts/utenti e l'id della setting page (che è una stringa) - default:false
- context - se il campo è sanificato in base al tipo è possibile passare il contesto come sopra - default:db
Esempi
$content = SanitizeAction( $action='FieldName', $args=[], $content );
IsPrivatePhpAllowed
Questa funzione controlla semplicemente se la costante gpci\privatePhpAllowed è definita e configurata su true. Sarà utilizzata nei files php come protezione aggiuntiva per bloccarne le visite dirette dove necessario.
Parametri
Nessuno.
Return
True o false.
Esempi
//utilizzata all inizio del file tema-child/private/php/ajax-public.php
if( !IsPrivatePhpAllowed() ){ die( 'Accesso non consentito' ); }
EncryptionAction
Questa funzione esegue un'azione di crittografia su un contenuto.
Parametri
- action - stringa - azione che verrà eseguita dalla funzione
- args - array associativo - argomenti per l'azione richiesta - default:[]
- cipher - stringa - algoritmo di crittografia utilizzato interno all'array openssl_get_cipher_methods
- secret_key - stringa - chiave segreta di cifratura/decifratura
- iv - stringa - vettore di inizializzazione - valore che aggiunge varietà alla cifratura
- id - stringa - recupera gli argomenti dall'id cifratura specificato; se impostati cipher, secret_key e iv questo parametro sarà ignorato - default: 'default' - content - stringa - contenuto a cui applicare l'azione - default:''
Return
Contenuto cifrato o decifrato.
Azioni/args
In questo caso gli argomenti non sono in base all'azione specificata ma alla cifratura scelta (per ora sono supportati solo i casi più semplici e comuni).
- encrypt
Ritorna il contenuto passato attraverso le funzioni json_encode e openssl_encrypt.
- decrypt
Ritorna il contenuto passato attraverso le funzioni openssl_decrypt e json_decode.
Esempi
//cifratura con parametri predefiniti
$ContenutoCriptato = EncryptionAction( 'encrypt', [], $content );
//decifratura con parametri predefiniti
$ContenutoDecriptato = EncryptionAction( 'decrypt', [], $ContenutoCriptato );
//cifratura personalizzata semplice
$ContenutoCriptato = EncryptionAction( 'encrypt', [ 'cipher'=>'aes-128-cbc', 'secret_key'=>'stringa_16_caratteri', 'iv'=>'altra_stringa_16_caratteri' ], $content );
//stessa cosa ma con id
$GLOBALS['gpci']['config']['php']['callback']['EncryptionAction'][] = [
'id' => 'id_cifratura',
'cipher' => 'aes-128-cbc',
'secret_key' => 'stringa_16_caratteri',
'iv' => 'altra_stringa_16_caratteri',
];
$ContenutoCriptato = EncryptionAction( 'encrypt', [ 'id'=>'id_cifratura' ], $content );
JsonAction
Questa funzione esegue un'azione di su una stringa json oppure un sua rappresentazione sotto forma di array.
Parametri
- content - stringa - contenuto a cui applicare l'azione - default:''
- action - stringa - azione che verrà eseguita dalla funzione - default: auto_to_json
- args - array associativo - argomenti per l'azione richiesta - default:[]
Return
In base all'azione.
Lista azioni/args
- json_to_array
Converte una stringa json ad array. La funzione tenterà nei seguenti modi ritornando la prima decodifica che ha successo:
- proverà direttamente a decodificare la stringa come json valido (con parentesi graffe e proprietà/valori con virgolette ecc...)
- proverà ad aggiungere, se non presenti le parentesi graffe agli estremi, poi riproverà a decodificare la stringa come prima
- proverà a decodificare la stringa come json semplificato
Prima di ritornare l'array ciclerà tra i valori convertendoli come da funzione ValueAction (azione ConvertArrayToAuto). Se la stringa non è convertibile ritornerà un array vuoto.
$args:
- do_shortcode - se tradurre gli shortcodes prima di decodificare la stinga - default:false
Esempi
//converte da json normale ad array (con graffe o senza la conversione riuscirà comunque)
$content = '{
"chiave1":"valore1",
"chiave2":{
"chiave3":"valore3",
"chiave4":{
"chiave5": "valoreX",
"chiave6": "valoreY"
}
}
}';
$content = JsonAction( $content , $action='json_to_array' );
//stessa cosa ma traducendo gli shortcodes
$content = JsonAction( $content , $action='json_to_array', $args=[ 'do_shortcode'=>true ] );
Json semplificato
Il json semplificato è un parsing personalizzato integrato in questa funzione che serve a passare argomenti da una stringa (come gli argomenti di una conversione dinamica) in modo semplice e convertirli ad array per utilizzarli in in funzioni php. E' completamente opzionale (e non adatto a tutti i contesti) ma migliora la leggibilità delle stringhe json. Segue le seguenti regole:
- gli argomenti sono sempre inseriti come nome:valore
- il separatore tra gli argomenti non è una virgola ma a capo linea
- la virgola nel valore si traduce in un array semplice
- le parentesi graffe si traducono in array contenenti le proprietà
//esempio di json semplificato (questa è la struttura di riferimento degli argomenti della conversione dinamica da stringa)
argomento1:valore1
argomento2:stringa1,stringa2
argomento3:{
sottoargomento1:valore1
sottoargomento2:valore2
sottoargomento3:valore3,valore4
}
- array_to_json
Converte un array a stringa json. Esegue semplicemente un json_encode del contenuto.
$args: Nessuno.
Esempi
//esempio
$content = JsonAction( $content , $action='array_to_json' );
- auto_to_json
Converte il contenuto a stringa json identificando automaticamente il tipo di contenuto (array o stringa). Se stringa rimuove tutti i tags html (compresi gli a capo) tramite la funzione wp_strip_all_tags.
$args:
- do_shortcode - booleano - se il contenuto è una stringa esegue do_shortcode prima di convertire il contenuto - default:true
Esempi
//esempio in php
$content = JsonAction( $content , $action='auto_to_json' );
//esempio in shortcode render_data (esegue l'azione auto_to_json in quanto è la predefinita)
[render_data type="mb" data="contenuto_tipo_array" functions="JsonAction"]
- get_property_value
Ottiene il valore della proprietà json con il nome specificato, null se non esistente. Per ora non funziona con proprietà annidate, se utile si farà in un secondo momento. Funziona sia con array che con contenuti di tipo stringa (anche non incapsulati nelle parentesi graffe).
$args:
- name - stringa - nome della proprietà di cui ottenere il valore
//esempio: ottiene il valore della proprietà description
$content = JsonAction( $content , $action='get_property_value', $args=[ 'name'=>'description' ] );
ValueAction (DIVIDERE AZIONI INTERNE ED ESTERNE E CREARE DEI WRAPPER!)
Questa funzione esegue azioni particolari su un valore utilizzando regole completamente personalizzate di uso comune in questo framework. E' utilizzata per uniformare, convertire, comparare e ottenere formati o valori. Per ora questa funzione ha pochissimi messaggi di errore e tenterà sempre di restituire qualcosa, valore originale o al limite stringa vuota. E' una funzione sperimentale e probabilmente avrà vari cambiamenti nel tempo.
Parametri
- action - stringa - azione che verrà eseguita dalla funzione - default:''
- value - qualsiasi tipo - valore che sarà sottoposto all'azione - default:''
- args - array associativo - argomenti richiesti dall'azione - default:[]
Return
In base all'azione.
Lista azioni
- GetType
Semplice wrapper della funzione php gettype. Ritorna il tipo di valore rilevato.
- ConvertStringToAuto
Se il valore è una stringa sarà convertito in quest'ordine:
- se true o TRUE il valore diventerà un booleano true
- se false o FALSE il valore diventerà un booleano false
- se null o NULL il valore diventerà un valore nullo (null)
- se numero intero il valore cambierà tipo a numero intero
Esempi:
//diventerà booleano true
$value = ValueAction( $action='ConvertStringToAuto', 'true' );
//diventerà null
$value = ValueAction( $action='ConvertStringToAuto', 'null' );
- ConvertArrayToAuto
Se il valore è un array ciclerà ricorsivamente tra tutti i valori interni convertendoli come da azione ConvertAutoToAuto.
- ConvertAutoToAuto
La funzione proverà ad ottenere il tipo di valore e lo convertirà di conseguenza in questo modo:
- se array sarà sottoposto alla conversione ConvertArrayToAuto
- se stringa sarà sottoposto alla conversione ConvertStringToAuto
- se numero intero/booleano/NULL il valore resterà identico
- ConvertAutoToString
Se il valore non è una stringa sarà convertito a stringa tramite la funzione json_encode. In un secondo momento saranno aggiunti parametri per la rimozione di caratteri speciali e per ricorsivare negli array.
- ConvertAutoToArray
Se il valore è un array, ritornerà il valore originale, altrimenti:
- se stringa: sarà convertita ad array di 1 elemento, se specificato il separatore sarà trattata con explode
- se numero: sarà inserito in un array da 1 elemento
- se oggetto: sarà convertito ad array
- se booleano: sarà inserito in un array da 1 elemento
Se il valore risultante non è un array, ritornerà un array vuoto.
$args:
- separator - argomento omonimo della funzione php explode - default: ''
- limit - argomento omonimo della funzione php explode. Attenzione in quanto il nome dell'argomento indica il numero di elementi massimi da cui sarà composto l'array di ritorno - default: PHP_INT_MAX
- recursive - booleano - se true trasformerà anche tutti i valori interni se del il tipo è compreso nell'argomento recursive_types - default: false
- recursive_types - array di stringhe - tipi di valore da trasformare in caso di ricorsione (per ora funzionano solo stringhe, array ed oggetti) - default: ['array','object']
$value = 'image/jpeg,image/webp';
$value = ValueAction( $action='ConvertAutoToArray', $value );
//risultato: [ 'image/jpeg,image/webp' ]
$value = 'document_root/elemento2';
$value = ValueAction( $action='ConvertAutoToArray', $value, $args=[ 'separator'=>'/', 'limit'=>1 ] );
//risultato: [ 'document_root/elemento2' ]
$value = 'document_root/elemento2';
$value = ValueAction( $action='ConvertAutoToArray', $value, $args=[ 'separator'=>'/', 'limit'=>2 ] );
//risultato: [ 'document_root', 'elemento2' ]
$value = 10;
$value = ValueAction( $action='ConvertAutoToArray', $value );
//risultato: [ 10 ]
//trasformazione con ricorsione di oggetti ad array
$value = ValueAction( $action='ConvertAutoToArray', $value, $args=[ 'recursive'=>true, 'recursive_types'=>['object'] ] );
- GetNestedValue (DEPRETACA, UTILIZZARE GetNestedValue)
Ottiene il valore/valori di una sotto chiave di un array iterando al suo interno come da argomento. Prima di iterare converte il valore ad array per evitare errori o warning. Si comporta come la funzione GpciValueIterable con alcune differenze (che verrà sostituita da questa). Se un eventuale percorso nesting non esiste sarà stampato un mesaggio di errore e ritornerà una stringa vuota. Se specificato l'operatore * al posto di una sotto chiave saranno raccolti in un array i valori della sottochiave successiva (o il valore corrente se non specificata).
$args:
- nesting - stringa/false - percorso interno all'array con chiavi annidate separate da virgole. Se booleano false ritornerà il valore originale - default: false
//ritorna il valore originale
ValueAction( $action='GetNestedValue', $value='valore_originale' );
//oppure
ValueAction( 'GetNestedValue', $value='valore_originale', $args=['nesting'=>'0'] );
//ritorna il secondo valore
ValueAction( $action='GetNestedValue', $value=['primo_valore', 'secondo_valore'], $args=['nesting'=>'1'] );
//ritorna vs_2222222222222
$value = [
'object' => 'list',
'data' => [
[ 'id'=>'vs_11111111111', 'object'=>'vector_store' ],
[ 'id'=>'vs_2222222222222', 'object'=>'vector_store' ]
];
ValueAction( $action='GetNestedValue', $value, ['nesting'=>'data,1,id'] );
//caso più complesso con operatori *
$value = [
'object' => 'list',
'data' => [
[
'id' => 'id1',
'type' => 'message',
'status' => 'completed',
'content' => [
[
'type' => 'output_text',
'annotations' => [],
'logprobs' => [],
'text' => 'Testo1',
]
],
'role' => 'assistant',
],
[
'id' => 'id2',
'type' => 'message',
'status' => 'completed',
'content' => [
[
'type' => 'input_text',
'text' => 'Testo2',
]
],
'role' => 'system',
],
],
'first_id' => 'valore esterno'
];
//ritorna: [ 'output_text', 'input_text' ]
ValueAction( $action='GetNestedValue', $value, ['nesting'=>'data,*,content,*,0,*,type'] );
- ConvertStringToPath
Se il valore è una stringa, sarà convertita a percorso la cui base è impostata dalla prima parola chiave trovata dal seguente elenco:
- document_root - punta alla root del server ottenuta tramite la globale php
$_SERVER['DOCUMENT_ROOT'] - site_root - punta alla root del sito ottenuta tramite la costante php
ABSPATH - wp_upload - punta alla cartella uploads di wordpress root del sito ottenuta dalla funzione php wp_upload_dir
- theme_child - punta alla cartella del tema child (gpci-child)
E' possibile continuare il percorso con sottocartelle e/o files. Questa azione ritorna il percorso finale.
$args:
- check - booleano - se controllare la raggiungibilità della cartella o file bersaglio. Se non raggiungibile ritorna false - default: false
Esempi:
//converte il valore al percorso della sottocartella framework all'interno della root del server
$value = ValueAction( $action='ConvertStringToPath', $value='document_root/framework', $args=[] );
//converte il valore al percorso della sottocartella framework all'interno della root del sito
$value = ValueAction( $action='ConvertStringToPath', $value='site_root/framework', $args=[] );
//converte il valore al percorso della cartella uploads
$value = ValueAction( $action='ConvertStringToPath', $value='wp_upload', $args=[] );
//converte il valore al percorso della cartella del tema child
$value = ValueAction( $action='ConvertStringToPath', $value='theme_child', $args=[] );
//converte il valore al percorso del file .htaccess nella root del sito
$value = ValueAction( $action='ConvertStringToPath', $value='site_root/.htaccess', $args=[] );
//stessa cosa ma controlla che il file sia raggiungibile
$value = ValueAction( $action='ConvertStringToPath', $value='site_root/.htaccess', $args=[ 'check'=>true ] );
- ConvertPathToString
Inverte l'azione precedente. E' possibile usare nel valore anche percorsi ftp/http/https, saranno convertiti automaticamente. Questa azione ritorna la stringa rappresentante il percorso oppure false in caso di fallimento.
$args: Nessuno.
Esempi:
//converte il percorso a stringa che lo rappresenta: diventa site_root/framework oppure document_root/framework
$value = ValueAction( $action='ConvertPathToString', $value='/public_html/framework', $args=[] );
//stessa cosa di
$value = ValueAction( $action='ConvertPathToString', $value='ftp://nomeutente@gigitopcinformatica.it/public_html/framework', $args=[] );
- CompareTo
La funzione eseguirà una comparazione tra il valore e un altro passato come argomento. In questo caso ritornerà il risultato della comparazione, ossia true/false.
$args:
- to - valore a cui sarà comparato il $value - default: ''
- comparator - comparatore tra i 2 valori. I comparatori supportati al momento sono: ==, ===, !=, !==, <, <=, >, >=. E' possibile inserire il comparatore direttamente nel valore inserendolo prima o dopo. Se inserito prima la comparazione sarà to comparatore $value, se inserito dopo invece sarà $value comparatore to. La funzione eliminerà quindi il comparatore dal valore e lo convertirà di conseguenza al tipo ritenuto corretto - default: '=='
- comparator_position - inserisce manualmente la posizione del comparatore nel caso che sia passato come argomento oppure forza la posizione se passato all'interno del $value. I valori possibili sono: after_value o before_value - default: 'after_value'
- compare_values - se il valore è un array è possibile confrontare il to con ogni valore del $value settando su true (per ora solo se array di stringhe) - default: false
- operator - operatore logico nel caso che compare_values sia true. E' possibile utilizzare AND, and, OR, or - default: AND
//converte il valore ad array poi compara il to con ogni voce dell'array - risultato: true
$value = 'image/jpeg,image/webp';
$to = 'image/jpeg';
$value = ValueAction( $action='ConvertAutoToArray', $value );
$result = ValueAction( $action='CompareTo', $value, [ 'to'=>$to, 'compare_values'=>true, 'operator'=>'OR' ] );
//stessa cosa di
$value = 'image/jpeg,image/webp';
$to = 'image/jpeg';
$value = ValueAction( $action='ConvertAutoToArray', $value );
$result = ValueAction( $action='CompareTo', $value, [ 'to'=>$to, 'compare_values'=>true, 'operator'=>'OR', 'comparator'=>'==' ] );
//stessa cosa di
$value = '==image/jpeg,==image/webp';
$to = 'image/jpeg';
$value = ValueAction( $action='ConvertAutoToArray', $value );
$result = ValueAction( $action='CompareTo', $value, [ 'to'=>$to, 'compare_values'=>true, 'operator'=>'OR' ] );
//compara 2 numeri, risultato: true
$value = '10>';
$to = 100;
$result = ValueAction( $action='CompareTo', $value, [ 'to'=>$to ] );
//stessa cosa
$value = 10;
$to = 100;
$result = ValueAction( $action='CompareTo', $value, [ 'to'=>$to, 'comparator'=>'>', 'comparator_position'=>'after_value' ] );
//stessa cosa ma risultato: false
$value = '>10';
$to = 100;
$result = ValueAction( $action='CompareTo', $value, [ 'to'=>$to ] );
- GetSubArraysByKey
La funzione otterrà i sotto arrays da un valore di tipo array con una certa chiave oppure con chiave che ha un determinato valore. Si comporterà in questo modo:
- se il valore non è un array la funzione ritornerà il valore originale
- se il valore è un oggetto sarà convertito ad array
- saranno presi in considerazione solo i sotto array o sotto oggetti(che saranno automaticamente convertiti)
- se la funzione non trova nulla che rispetta i criteri ritornerà un array vuoto
$args:
- key - stringa - chiave che deve essere presente nel sotto array - default: NULL
- value - qualsiasi - valore della chiave se si vuole controllare anche il valore. Se utilizzato * ritorneranno tutti gli elementi con la key senza controlalre il valore - default: NULL
- check_multiple_values - booleano - se true: il value sarà convertito ad array e sarà confrontata la presenza del valore all'interno invece che la corrispondenza esatta - default: false
$value = [
[
'id' => 'lavoro1',
'function' => 'funzione1'
],
[
'id' => 'lavoro2',
'function' => 'funzione2'
]
];
//ottiene entrambi i sotto arrays
$value = ValueAction( $action='GetSubArraysByKey', $value, $args=[ 'key'=>'id' ] );
//ottiene il sotto array con id=lavoro2: ['id'=>'lavoro2', 'function'=>'funzione2' ]
$value = ValueAction( $action='GetSubArraysByKey', $value, $args=[ 'key'=>'id', 'value'=>'lavoro2' ] );
//ottiene sotto arrays multipli
$value = ValueAction( $action='GetSubArraysByKey', $value, $args=[ 'key'=>'id', 'value'=>['lavoro1', 'lavoro2'] 'check_multiple_values'=>true ] );
GetNestedValue (FARE PAGINA NESTING!)
Alias di ValueAction (GetNestedValue), ne prenderà il posto completamente.
Parametri
- value- qualsiasi - valore si cui eseguire il nesting - default:''
- nesting- stringa/booleano false - stringa in formato nesting (false per disabilitare) - default: false
- args - array associativo - eventuali argomenti aggiuntivi - default:[]
Return
Valore originale o nested, null in caso di nesting errato.
Esempi
$value = OptionAction( 'get', 'gpci_core_option_redirect' );
$nested_value = GetNestedValue( $value, $nesting='redirect-htaccess-simple-group,0', $args=[] );
$value = [
'object' => 'list',
'data' => [
[ 'id'=>'vs_11111111111', 'object'=>'vector_store' ],
[ 'id'=>'vs_2222222222222', 'object'=>'vector_store' ]
]
];
//ritorna 'vs_2222222222222'
$NestedValue = GetNestedValue( $value, $nesting='data,1,id' );
//ritorna ['vs_11111111111','vs_2222222222222']
$NestedValue = GetNestedValue( $value, $nesting='data,*,id' );
DatabaseAction
Questa funzione esegue un'azione su un database.
Parametri
- action - stringa - azione che verrà eseguita dalla funzione - default:''
- args - array associativo - argomenti richiesti dall'azione - default:[]
Return
True se l'azione ha successo, false altrimenti.
Lista azioni/args
Come negli altri casi se mancano argomenti necessari sarà stampato a schermo un messaggio di errore.
- test
Testa la connessione al database, serve come utility per verificare i parametri. Gli argomenti sono gli stessi delle costanti e variabili utili impostati nel file wp-config.php.
$args:
- DB_NAME - stringa - valore della costante omonima
- DB_USER - stringa - valore della costante omonima
- DB_PASSWORD - stringa - valore della costante omonima
- DB_HOST - stringa - valore della costante omonima - default:localhost
- table_prefix - stringa - valore della variabile omonima - default:wp_
- add
Aggiunge la connessione specificata alla globale $GLOBALS['gpci']['databases']. La prima volta che viene aggiunto un database con successo il corrente verrà salvato nella globale $GLOBALS['gpci']['default']. Prima di aggiungere un database sarà controllata la connessione compresa di prefisso tramite l'azione test, in caso di problemi verrà stampato un ErrorMessage e il database non sarà aggiunto. Gli argomenti comprendono i nomi delle costanti e variabili utili impostati nel file wp-config.php.
$args:
- DB_NAME - stringa - valore della costante omonima del database a cui ci si vuole collegare.
- DB_USER - stringa - valore della costante omonima del database a cui ci si vuole collegare.
- DB_PASSWORD - stringa - valore della costante omonima del database a cui ci si vuole collegare.
- DB_HOST - stringa - valore della costante omonima del database a cui ci si vuole collegare - default:localhost
- table_prefix - stringa - valore della variabile $table_prefix omonima - default:wp_
- id - stringa - id a cui ci si riferirà del database specificato. Non usare come id default in quanto è riservato al database corrente.
- switch
Passa al database con id specificato e setta la globale $GLOBALS['gpci']['database_active'] di conseguenza.
$args:
- id - stringa - id del database a cui passare.
Esempi
//testa se la connessione a un database
$test = DatabaseAction( $action='test', $args=[ 'DB_NAME'=>'nome', 'DB_USER'=>'utente', 'DB_PASSWORD'=>'password', 'DB_HOST'=>'localhost', 'table_prefix'=>'wp_' ] );
//aggiunge una connessione all'elenco dei databases
DatabaseAction( $action='add', $args=[ 'id'=>'altrosito', 'DB_NAME'=>'nome', 'DB_USER'=>'utente', 'DB_PASSWORD'=>'password', 'DB_HOST'=>'localhost', 'table_prefix'=>'wp_' ] );
//passa a un database secondario, ottiene il titolo di un post e torna al database primario
DatabaseAction( $action='switch', $args=[ 'id'=>'altrosito' ] );
$post_title = DynamicConversion( $type='wp', $content='title,2592' );
DatabaseAction( $action='switch', $args=[ 'id'=>'default' ] );
Documentazione rilevante
DynamicConversion
Converte il valore verso il tipo scelto cercando la globale inerente. Questa funzione prenderà completamente il posto di GpciContentTypeConversion diventando la funzione di riferimento per la conversione dinamica.
Parametri
- $type - stringa/null- tipo di contenuto della conversione - default: string
- $content - stringa/array/null - contenuto da convertire, il formato è lo stesso descritto nella conversione dinamica - default:''
- $args - array associativo o stringa in formato json/json semplificato- argomenti aggiuntivi specificati nella conversione dinamica - default:[]
Combinazioni
Questa funzione può essere configurata in varie combinazioni nel seguente ordine (ritornerà la prima combinazione rilevata):
- se $content è null ritornerà null
- se $type è null e $content è un array contenente le chiavi type e content: la funzione utilizzerà questi come parametri. Esempio:
DynamicConversion( $type=null, $content=[ 'type'=>'wp', 'value'=>'valore' ] ) - se $type è null e $content è un array il cui primo elemento è un tipo esistente: la funzione utilizzerà questo come tipo, poi unirà i restanti elementi e li utilizzerà come contenuto. Esempio:
DynamicConversion( $type=null, $content=[ 'wp', 'valore' ] ) - se $type è null e $content è una stringa che potrebbe essere una conversione dinamica con separatore virgola: proverà ad ottenere i parametri dalla stringa. Esempio:
DynamicConversion( $type=null, $content='wp,valore' ] )
Return
Contenuto convertito, null se il tipo è none o il contenuto è null. Se la conversione fallisce ritornerà null (se utilizzato l'argomento maybe_convert ritornerà il valore originale). Se la conversione a campo metabox restituisce un valore php falso (prima delle manipolazioni tramite argomenti) sarà testata l'esistenza del campo e, se non esistente, restituirà null generando un ErrorMessage (per ora solo per i campi metabox).
Esempi
//titolo post corrente
$PostTitle = DynamicConversion( $type='wp', $content='title' );
//stessa cosa di
$PostTitle = DynamicConversion( $type=null, $content='wp,title' );
//permalink post con id 34
$Permalink = DynamicConversion( $type='wp', $content='permalink,34' );
//valore campo metabox con id comunicazione relativo al post corrente
$MbField = DynamicConversion( $type='mb', $content='comunicazione' );
//valore campo metabox con id local-business-schema relativo alla pagina impostazioni opzionisito
$MbField = DynamicConversion( $type='mb', $content='local-business-schema,opzionisito,object_type:setting' );
//valore titolo di un post (id 1000) da un database esterno (pre aggiunto) svuotando la cache solo dopo aver ottenuto il valore
$PostTitleSecondaryDatabase = DynamicConversion( $type='wp', $content='title', $args=[ 'database'=>'sito_esterno', 'delete_cache_end'=>true ] );
//stessa cosa in conversione dinamica non tramite php
tipo: wp
content: title,1000
args: database:sito_esterno,delete_cache_end:true
//genera un pulsante che esegue un'azione ajax quando cliccato
echo "<button onclick='".DynamicConversion( 'ajaxaction', 'azione', [/*argomenti*/] )."'>Testo pulsante</button>";
//Esegue la conversione dinamica soltanto se potrebbe esserlo:
//esegue
DynamicConversion( null, 'mb,campo_personalizzato', $args=[ 'maybe_convert'=>true ] );
//non esegue (ritorna la stringa campo_personalizzato)
DynamicConversion( null, 'campo_personalizzato', $args=[ 'maybe_convert'=>true ] );
//Altre varianti di ingresso
DynamicConversion( null, [ 'type'=>'wp', 'content'=>'title' ], $args=[] );
DynamicConversion( null, [ 'wp', 'title' ], $args=[] );
DynamicConversion( null, 'wp,title', $args=[] );
Documentazione rilevante
GetDefaultValue
Questa funzione serve a ottenere un valore predefinito del framework. I parametri sono semplificati per poter essere utilizzati semplicemente nella conversione dinamica. In futuro potrebbe essere espansa per fornire valori personalizzati.
Parametri
- value - stringa - tipo di valore da ottenere - default:''
- arg1 - stringa - argomento1 in base al valore da ottenere - default:''
Return
Valore default.
Valori ottenibili
Il seguente valore è utilizzabile dinamicamente selezionando funzione php con nome DefaultValue e come secondo parametro il valore da ottenere, esempio:
GetDefaultValue( 'MetaTitle' )
MetaTitle
Valore del tag title, il valore di ritorno è il titolo del post corrente.
Esempio in conversione dinamica:
GetDefaultValue,MetaTitle
MetaNameDescription
Valore del tag meta name="description", il valore di ritorno è il riassunto del post corrente.
Esempio in conversione dinamica:
GetDefaultValue,MetaNameDescription
MetaPropertyOgSiteName
Valore del tag meta property="og:site_name", il valore di ritorno è il nome del sito.
Esempio in conversione dinamica:
GetDefaultValue,MetaPropertyOgSiteName
MetaPropertyOgTitle
Esempio in conversione dinamica:
GetDefaultValue,MetaPropertyOgTitle
Valore del tag meta property="og:title", il valore di ritorno è il titolo del post corrente.
MetaPropertyOgDescription
Valore del tag meta property="og:description", il valore di ritorno è il riassunto del post corrente.
Esempio in conversione dinamica:
GetDefaultValue,MetaPropertyOgDescription
MetaPropertyOgImage
Valore predefinito dell'immagine opengraph. L'argomento1 equivale allo slug di una grandezza immagine registrata nel sito, se non specificato la funzione cercherà lo slug ogimage-large, se non trovato utilizzerà come fallback lo slug thumbnail. La funzione proverà quindi ad ottenere l'immagine da impostare come opengraph con questo ordine:
- immagine di anteprima del post corrente con slug dimensione specificato
- immagine del logo con slug dimensione specificato
- immagine del logo di wordpress a dimensione 500x400
Esempio in conversione dinamica:
//ottiene l'immagine con slug ogimage-large oppure thumbnail
GetDefaultValue,MetaPropertyOgImage
//ottiene l'immagine con slug personalizzato
GetDefaultValue,MetaPropertyOgImage,slugpersonalizzato
MetaPropertyOgImageWidth
Valore predefinito della larghezza dell'immagine opengraph ottenuta come specificato sopra.
Esempio in conversione dinamica:
GetDefaultValue,MetaPropertyOgImageWidth
MetaPropertyOgImageHeight
Valore predefinito della larghezza dell'immagine opengraph ottenuta come specificato sopra.
Esempio in conversione dinamica:
GetDefaultValue,MetaPropertyOgImageHeight
MetaPropertyOgImageArray
Valori predefiniti dell'immagine opengraph. Questo valore ritorna un array derivante dalla funzione wp_get_attachment_image_src.
Esempio in conversione dinamica:
GetDefaultValue,MetaPropertyOgImageArray
IncludeComponents
Questa funzione include include i files php (se non già inclusi) di un componente aggiuntivo indipendentemente dalla costante di inclusione ed è pensata per essere utilizzata nelle pagine singole o nei templates. Se la costante relativa i post types di attivazione non è settata, la funzione lo farà automaticamente. Probabilmente in futuro verrà creata una metabox di controlli per poter abilitare i componenti aggiuntivi in ogni pagina.
Parametri
- components - stringa/array - componente/i da includere - default:[]
- $args - array associativo - argomenti aggiuntivi - default:[]
Return
Nulla.
Args
Gli argomenti aggiuntivi della funzione e relativi valori predefiniti sono:
- post_types - array - slugs dei post types di attivazione del componente, se non specificato darà il valore della costante
gpci\CurrentPostType
Componenti attivabili
Non tutti i componenti aggiuntivi sono ancora attivabili, man mano verranno aggiornati. La lista corrente è:
- module\icons - modulo icone in pagina singola
- module\meta - modulo meta in pagina singola
Esempi
//include il modulo icone solo nel frontend
if( !is_admin() ){ IncludeComponents( $components='module\icons' ); }
//include il modulo icone solo nel backend
if( is_admin() ){ IncludeComponents( $components='module\icons' ); }
//include il modulo icone sia nel frontend che nel backend
IncludeComponents( $components='module\icons' );
Documentazione rilevante
StringAction
Questa funzione esegue un'azione su una stringa.
Parametri
- $action - stringa - azione che verrà eseguita dalla funzione - default:''
- $string - stringa - stringa su cui sarà eseguita l'azione - default:''
- $args - array associativo - argomenti richiesti dall'azione - default:[]
Return
Stringa modificata, stringa vuota in caso di errori o problemi.
Lista azioni/args
- replace
Questa azione si comporta in modo analogo alla funzione php str_replace. Funziona solo con stringhe sia in search che replace.
$args:
- search - stringa - stringa da cercare - default: ''
- replace - stringa - stringa che sostituirà la stringa search - default: ''
- limit - numero intero - limite massimo di sostituzioni, utilizzare -1 per nessun limite - default: -1
- offset - numero intero - numero di occorrenze che saranno saltate - default: 0
Esempi
//Sostituisce tutte le a con b
StringAction( $action='replace', $string='aaaaa', $args=[ 'search'=>'a', 'replace'=>'b' ] );
//equivalente
StringAction( $action='replace', $string='aaaaa', $args=[ 'search'=>'a', 'replace'=>'b', 'limit'=>-1 ] );
//Sostituisce le prime 2 a con b
StringAction( $action='replace', $string='aaaaa', $args=[ 'search'=>'a', 'replace'=>'b', 'limit'=>2 ] );
//Salta le prime 2 a, poi sostituisce le prossime 2 a con b
StringAction( $action='replace', $string='aaaaa', $args=[ 'search'=>'a', 'replace'=>'b', 'limit'=>2, 'offset'=>2 ] );
ConnectionAction
Questa funzione esegue un'azione su una connessione di tipo: percorso server, http, https, ftp, smb o unc. Può essere utilizzata per ottenere informazioni, mappare tipi di connessione diversi o tra siti/installazioni differenti. Attenzione a non esagerare fallimenti su connessioni ftp in quanto il server potrebbe bloccare l'accesso dopo troppi fallimenti.
Parametri
- $action - stringa - azione che verrà eseguita dalla funzione - default:''
- $resource - stringa o array rappresentante un file temporaneo (solo alcune azioni) o percorso/percorso semplificato/url su cui eseguire l'azione - default:''
- $args - array associativo - argomenti richiesti dall'azione - default:[]
Return
In base all'azione, false in caso di fallimento (solitamente con messaggio di errore).
Lista azioni/args
- get_info
Questa azione ritorna un array di informazioni sulla risorsa. Le informazioni sono ottenute tramite la funzione wp_parse_url.
$args: nessuno.
Esempi
ConnectionAction( $action='get_info', $resource='/public_html/file.pdf' );
//stessa cosa di
ConnectionAction( $action='get_info', $resource='site_root/file.pdf' );
- get_content
Questa azione ritorna il contenuto della risorsa. Se la risorsa non esiste o non è raggiungibile ritornerà false. Per ora funziona solo contenuti http e https.
$args: nessuno.
Esempi
ConnectionAction( $action='get_content', $resource='https://sito.it' );
- get_access_scheme
Questa azione proverà a capire il tipo di formato percorso/url che la risorsa rappresenta. Ritorna una stringa con il formato ottenuto oppure false in caso di fallimento. Ritornerà il primo formato ottenuto provando in quest'ordine:
- tmp_file - se file temporaneo caricato da un form o gestito da un hook wordpress (quando applicabile)
- http/https/ftp/smb/ecc.. - in base al valore
- path - se potenziale percorso server
- unc - se stringa che rappresenta una condivisione locale windows
- false - se falliscono i punti precedenti
$args: nessuno.
Esempi
//ritorna tmp_file
ConnectionAction( $action='get_access_scheme', $resource=[ 'name'=>'nome.png', 'full_path'=>'nome.png', 'type'=>'image/png', 'tmp_name'=>'/volume1/@tmp/phpvr6LFe', 'error'=>0, 'size'=>350213 ] );
//oppure
add_filter( 'wp_handle_upload_prefilter', function( $file ){
ConnectionAction( $action='get_access_scheme', $resource=$file );
//altre istruzioni
} );
//ritorna path
ConnectionAction( $action='get_access_scheme', $resource='/public_html/file.pdf' );
//ritorna http
ConnectionAction( $action='get_access_scheme', $resource='http://www.gigitopcinformatica.it/file.pdf' );
//ritorna https
ConnectionAction( $action='get_access_scheme', $resource='https://www.gigitopcinformatica.it/file.pdf' );
//ritorna ftp
ConnectionAction( $action='get_access_scheme', $resource='ftp://nomeutente@gigitopcinformatica.it/public_html/file.pdf' );
//ritorna smb
ConnectionAction( $action='get_access_scheme', $resource='smb://gigitopcinformatica.it/file.pdf' );
//ritorna unc
ConnectionAction( $action='GetAccessScheme', $resource='\\192.168.2.5\web\file.pdf' );
- convert_access_scheme
Questa azione converte un percorso o un url a un altro formato oppure li mappa da un sito a un altro. Ritorna la stringa convertita/la risorsa di ingresso (se lo schema rilevato è uguale al parametro to )/false in caso di fallimento. Se la risorsa di ingresso è un percorso semplificato sarà sempre convertito a percorso server. Supporta i seguenti formati:
- percorsi server/percorsi semplificati
- url http/https/ftp
$args:
- to - stringa - tipo di formato a cui sarà convertito il valore. Può essere: http, https, path, ftp, htt(in questo caso sarà utilizzato http o https in base alla connessione del sito) - default: lo schema originale della risorsa
- local_site - booleano/stringa - se settato su true: configura automaticamente parametri e variabili per l'installazione corrente (quindi risorsa e output saranno inerenti il sito corrente). Se stringa: configura automaticamente parametri e variabili per il server corrente (in questo caso la stringa sarà il percorso di installazione) - E' comunque possibile sovrascrivere i parametri manualmente per mappature particolari - default: true
- host - stringa - sostituisce l'host (http,https e ftp) - default: host originale della risorsa
- path - stringa - sostituisce il path - default: path originale della risorsa
- path_translate - numero intero - transla il path per adattare la conversione in avanti - default: 0
- path_start - stringa - prepende il valore al path (dopo eventuale translazione) - default: ''
- user - stringa - nome utente da aggiungere se il formato lo supporta (per ora solo ftp) - default: nessuno
- pass - stringa - password da aggiungere se il formato lo supporta (per ora solo ftp) - default: nessuno
- query - stringa - query strings da aggiungere alla fine del path se supportato - default: ''
- fragment - stringa - fragment (ossia ancora) da aggiungere alla fine del path se supportato - default: ''
- check - booleano - se controllare la raggiungibilità della risorsa convertita prima di ritornarla, se non raggiungibile ritornerà false - default: false
Esempi
//converte url https a http
$url = ConnectionAction( $action='convert_access_scheme', $resource='https://www.gigitopcinformatica.it/immagine.webp', $args=[ 'to'=>'http' ] );
//converte percorso iniziale sito corrente a http o https in base alla connessione del sito
$url = ConnectionAction( $action='convert_access_scheme', $resource=ABSPATH, $args=[ 'to'=>'htt' ] );
//converte url https sito corrente a percorso server sito corrente
$path = ConnectionAction( $action='convert_access_scheme', $resource='https://www.gigitopcinformatica.it/immagine.webp', $args=[ 'to'=>'path' ] );
//converte url https sito corrente a ftp sito corrente
$url = ConnectionAction( $action='convert_access_scheme', $resource='https://www.gigitopcinformatica.it/immagine.webp', $args=[ 'to'=>'ftp' ] );
//converte url https sito corrente a ftp sito corrente aggiungendo nome utente e password
$url = ConnectionAction( $action='convert_access_scheme', $resource='https://www.gigitopcinformatica.it/immagine.webp', $args=[ 'to'=>'ftp', 'user'=>'nomeutente', 'pass'=>'password' ] );
//mappa url https sito corrente a sito esterno
$path = ConnectionAction( $action='convert_access_scheme', $resource='https://www.gigitopcinformatica.it/immagine.webp', $args=[ 'host'=>'sitoesterno.it' ] );
//mappa url https sito corrente a sito esterno ma ritorna la stringa solo se esiste l'immagine nel sito esterno
$path = ConnectionAction( $action='convert_access_scheme', $resource='https://www.gigitopcinformatica.it/immagine.webp', $args=[ 'host'=>'sitoesterno.it', 'check'=>true ] );
//mappa url ftp sito corrente a sito secondario su server corrente
$path = ConnectionAction( $action='convert_access_scheme', $resource='ftp://utente@gigitopcinformatica.it/public_html/wp-content/uploads/immagine.webp', $args=[ 'local_site'=>'blog' ] );
//mappa percorso server sito corrente a percorso server su nas locale
$ConnectionAction = ConnectionAction( $action='convert_access_scheme', $resource='/public_html/immagine.webp', $args=[
'local_site' => false,
'path_translate' => 1,
'path_start' => '/192.168.2.5/gestionale-interno/'
] );
- init_curl
Questa azione inizializza cURL. Per ora è utilizzata solo internamente dalle altre azioni.
- close_curl
Questa azione chiude l'handle cURL corrente. Per ora è utilizzata solo internamente dalle altre azioni.
- get_http_code
Questa azione ottiene il codice html relativo alla risorsa http o https, ritorna un numero intero o false in caso di problemi. Se utilizzata con gli altri schemi di accesso stamperà un errore e ritornerà false.
Esempi
//ritorna 200 se l'immagine esiste
$url = ConnectionAction( $action='get_http_code', $resource='https://www.gigitopcinformatica.it/immagine.webp', $args=[] );
Altra documentazione rilevante
- check
Questa azione controlla se una risorsa è raggiungibile, ritorna true o false. Può essere utilizzata con gli schemi http e https, ftp e path(in questo caso solo se percorso locale e appartenente al server corrente).
$args:
- host - stringa - sostituisce l'host (solo ftp) - default: host originale della risorsa oppure 127.0.0.1
- user - stringa - sostituisce il nome utente (solo ftp) - default: user originale della risorsa oppure anonymous
- pass - stringa - sostituisce la password (solo ftp) - default: password originale della risorsa oppure vuota
- path - stringa - sostituisce il path (solo ftp) - default: path originale della risorsa oppure /
- port - stringa - sostituisce la porta (solo ftp) - default: 21
- timeout - stringa - sostituisce il numero di secondi di timeout (solo ftp) - default: 1
Note
Per i collegamenti ftp se server/porta oppure utente/password sono errati sarà anche stampato un ErrorMessage come avvertimento.
Esempi
//controlla se l'immagine è raggiungibile via https
$url = ConnectionAction( $action='check', $resource='https://www.gigitopcinformatica.it/immagine.webp' );
//controlla se un'immagine esiste sul server corrente
$url = ConnectionAction( $action='check', $resource='/home/utente/public_html/immagine.webp' );
//controlla se un'immagine esiste in un server ftp in vari modi
$url = ConnectionAction( $action='check', $resource='ftp://utente:password@gigitopcinformatica.it:21/public_html/immagine.webp', $args=[] );
$url = ConnectionAction( $action='check', $resource='ftp://utente@gigitopcinformatica.it/public_html/immagine.webp', $args=['pass'=>'password'] );
$url = ConnectionAction( $action='check', $resource='ftp://indifferente', $args=[
'host' => 'gigitopcinformatica.it',
'user' => 'utente',
'pass' => 'pass',
'path' => '/public_html/immagine.webp',
'timeout' => 3
] );
FileAction
Questa funzione esegue un'azione su un file locale esistente, attenzione in quanto funzionerà solo su files, non cartelle. Se passato un url http/https/ftp oppure un file temporaneo (esempio caricato da un form o un hook wordpress) sarà automaticamente convertito al percorso del file. Non utilizzare su file appartenenti alla libreria in quanto questa funzione non aggiornerà il database del sito, per quello utilizzare la funzione MediaAction.
Parametri
- action - stringa - azione che verrà eseguita dalla funzione - default:''
- file - stringa - percorso/percorso semplificato/url assoluto/url ftp del file su cui eseguire l'azione - default:''
- args - array associativo - argomenti richiesti dall'azione - default:[]
Return
False se l'azione non ha successo oppure non ha bisogno di essere eseguita (esempio se nell'azione rename il file ha già lo stesso nome oppure nell'azione delete il file non esiste), true/array/stringa se l'azione ha successo.
Lista azioni/args
Come negli altri casi se mancano argomenti necessari sarà stampato a schermo un messaggio di errore:
- get_info
Restituisce una o più informazioni su un file. Se non richiesta l'informazione singola ritorneranno tutte le informazioni come array. Le informazioni ottenibili sono:
| Chiave/informazione | Descrizione | Esempio |
|---|---|---|
| dirname | percorso della cartella che contiene il file | /home2/utente/public_html/blog |
| basename | nome file con estensione | index.php |
| filename | nome file senza estensione | index |
| extension | estensione file | php |
| mime | mime file | text/x-php |
| type | tipo file ricavato dal mime | text |
| subtype | sottotipo file ricavato dal mime | x-php |
| size | grandezza file in byte | 405 |
| width | larghezza file in px (0 se non possibile) | 0 |
| height | altezza file in px (0 se non possibile) | 0 |
| content | contenuto file | contenuto testuale o contenuto binario |
| date_modified | data di ultima modifica del file in formato timestamp | 1580970791 |
| path | percorso completo del file | /home2/utente/public_html/blog/index.php |
| content | contenuto del file (in base all'argomento) | contenuto leggibile umanamente |
$args:
- info - stringa/false - eventuale informazione singola da ottenere, ossia chiave nell'array di informazioni - default: false
- get_content - booleano/stringa - aggiunge il contenuto del file alle informazioni. Se stringa auto il contenuto sarà aggiunto solo per le estensioni leggibili umanamente - default: false
Esempi
//ottiene tutte le informazioni
FileAction( $action='get_info', $file='/public_html/file.pdf' );
//ottiene tutte le informazioni compreso il contenuto del file se umanamente leggibile leggibile
FileAction( $action='get_info', $file='/public_html/file.txt', $args=['get_content'=>'auto'] );
//ottiene il tipo di file
FileAction( $action='get_info', $file='/public_html/file.pdf', $args=['info'=>'type'] );
//oppure
$type = FileAction( $action='get_info', $file='/public_html/file.pdf' )['type'];
- rename
Rinomina un file lasciando inalterata l'estensione. Il nome del file sarà sanificato dalla funzione sanitize_file_name.
$args:
- name - stringa - nuovo nome che sarà assegnato al file
- return - stringa - cosa deve ritornare l'azione in caso di successo: boolean per ritornare true/false, path per ritornare il file finale comepleto di percorso - default: boolean
Esempi
FileAction( $action='rename', $file='/public_html/file.pdf', $args=[ 'name'=>'nuovo-nome' ] );
//stessa cosa di
FileAction( $action='rename', $file='https://www.gigitopcinformatica.it/file.pdf', $args=[ 'name'=>'nuovo-nome' ] );
//stessa cosa di
FileAction( $action='rename', $file='ftp://nomeutente@gigitopcinformatica.it/public_html/file.pdf', $args=[ 'name'=>'nuovo-nome' ] );
- change_extension
Cambia l'estensione a un file lasciando inalterato il nome e senza applicare conversioni. Da usare solo in casi specifici.
$args:
- extension - stringa - nuova estensione che sarà assegnata al file
Esempi
FileAction( $action='change_extension', $file='/public_html/immagine.png', $args=[ 'extension'=>'jpg' ] );
- copy_to
Copia un file a un percorso.
$args:
- to - stringa - percorso di destinazione. Può essere inserito anche sotto forma di percorso semplificato/http/https/ftp, sarà convertito automaticamente - default: percorso del file corrente
- name - stringa - nuovo nome del file copiato - default: nome del file corrente
- extension - stringa - nuova estensione del file copiato - default: estensione del file corrente
- auto_create_dir - booleano - se creare automaticamente le cartelle non esistenti fino alla destinazione - default: false
- overwrite - booleano - se sovrascrivere un eventuale file già esistente con quello copiato - default: false
- auto_rename - booleano - se auto rinominare il file copiato se già esistente (solo se non abilitata la sovrascrittura) - default: false
- return - stringa - cosa deve ritornare l'azione in caso di successo: boolean per ritornare true/false, path per ritornare il file finale comepleto di percorso - default: boolean
Esempi
//copia un file a una sotto cartella esistente
FileAction( $action='copy_to', $file='/public_html/immagine.png', $args=[ 'to'=>'/public_html/sottocartella/' ] );
//stessa cosa di
FileAction( $action='copy_to', $file='/public_html/immagine.png', $args=[ 'to'=>'ftp://nomeutente@gigitopcinformatica.it/public_html/sottocartella' ] );
//stessa cosa di
FileAction( $action='copy_to', $file='/public_html/immagine.png', $args=[ 'to'=>'server_root/sottocartella' ] );
//copia un file a una sotto cartella non esistente creando automaticamente il percorso
FileAction( $action='copy_to', $file='/public_html/immagine.png', $args=[ 'to'=>'/public_html/sottocartella1/sottocartella2/sottocartella3', 'auto_create_dir'=>true ] );
//copia un file a una sotto cartella esistente sovrascrivendo un eventuale file con stesso nome ed estensione
FileAction( $action='copy_to', $file='/public_html/immagine.png', $args=[ 'to'=>'/public_html/sottocartella/', 'overwrite'=>true ] );
//copia un file a una sotto cartella esistente auto rinomimandolo se già esistente
FileAction( $action='copy_to', $file='/public_html/immagine.png', $args=[ 'to'=>'/public_html/sottocartella/', 'auto_rename'=>true ] );
//copia un file nella cartella corrente cambiando nome ed estensione
FileAction( $action='copy_to', $file='/public_html/immagine.png', $args=[ 'name'=>'nuovo-nome', 'extension'=>'BAK' ] );
- move_to
Sposta un file in un altro percorso. Esegue l'azione copy_to e, se ha successo, l'azione delete.
$args: Come per azione copy_to
Esempi
//sposta un file a una sotto cartella esistente
FileAction( $action='move_to', $file='/public_html/immagine.png', $args=[ 'to'=>'/public_html/sottocartella/' ] );
- delete
Elimina un file.
$args: nessuno
Esempi
FileAction( $action='delete', $file='/public_html/file.pdf' );
- edit
Modifica un file. DA FINIRE E DOCUMENTARE
$args:
- position - stringa - posizione di inserimento dati - default: append
Esempi
FileAction( $action='edit', $file='/public_html/file.php' );
- convert
Converte un file modificando soltanto i parametri specificati, per il momento funzionerà pienamente solo da un'immagine ad un'altra. Se possibile verrà utilizzata l'estensione ImageMagick, come fallback verrà utilizzato gd. Per ora quest'azione riscriverà sempre il file anche se i parametri rilevati sono identici al file originale.
$args:
- name - stringa/null - eventuale nuovo nome del file (verrà mantenuto anche il file originale a meno che non specificata la rimozione), Per ora il file sarà sempre scritto nella stessa cartella - default: null (nome corrente)
- overwrite - booleano - se sovrascrivere un eventuale nuovo file se già esistente. Si applica quindi solo se specificato il parametro name - default: false
- extension - stringa/null - eventuale estensione a cui convertire il file - default: null (estensione corrente)
- quality - numero intero/null - qualità immagine tra 1 e 100. Se null la funzione proverà ad ottenere la qualità corrente oppure 0. Se 0 sarà assegnata la qualità predefinita - default: 88(image/jpeg), 90(image/png), 80(image/webp), 90(altri mime)
- width - numero intero/null - numero di pixel in larghezza a cui ridimensionare l'immagine - default: larghezza originale
- height - numero intero/null - numero di pixel in altezza cui ridimensionare l'immagine - default: altezza originale
- crop - verrà aggiunto in un secondo momento
- delete_original - booleano - se eliminare il file originale (solo se viene creato un nuovo file diverso dall'originale) - default: false
- return - stringa - cosa deve ritornare l'azione in caso di successo: boolean per ritornare true/false, path per ritornare il file finale comepleto di percorso - default: boolean
Esempi
//converte un'immagine da jpg a webp mantenendo il file originale
FileAction( $action='convert', $file='/public_html/immagine.jpg', $args=[ 'extension'=>'webp' ] );
//converte un'immagine da jpg a webp eliminando, se la conversione ha successo, il file originale
FileAction( $action='convert', $file='/public_html/immagine.jpg', $args=[ 'extension'=>'webp', 'delete_original'=>true ] );
//ridimensiona un'immagine e un nuovo file sovrascrivendo un eventuale file con lo stesso nome
FileAction( $action='convert', $file='/public_html/immagine.jpg', $args=[ 'name'=>'nuovonome', 'width'=>150, 'overwrite'=>true ] );
//converte un'immagine da jpg a webp cambiando nome al file e lasciando il file originale intoccato
FileAction( $action='convert', $file='/public_html/immagine.jpg', $args=[ 'name'=>'nuovonome', 'extension'=>'webp' ] );
//specifica anche una qualità di conversione personalizzata
FileAction( $action='convert', $file='/public_html/immagine.jpg', $args=[ 'extension'=>'webp', 'quality'=>50 ] );
//ridimensiona un'immagine con rapporto ratio originale
FileAction( $action='convert', $file='/public_html/immagine.jpg', $args=[ 'width'=>150, 'height'=>150 ] );
MediaAction
Questa funzione esegue un'azione su un media.
Parametri
- $action - stringa - azione che verrà eseguita dalla funzione - default:''
- $media - stringa - ID numerico del media oppure percorso server/percorso semplificato, url http/https/ftp dell'immagine allegata al media. E' possibile anche puntare a una grandezza media registrata invece che il file originale - default:''
- $args - array associativo - argomenti richiesti dall'azione - default:[]
Return
True se l'azione ha successo, false altrimenti.
Note
Se l'immagine è un ID numerico valido e l'azione è una modifica del media sarà aggiornato il database con i nuovi dati immagine. Se esistente un'immagine di fallback jpg o png per il momento non sarà modificata.
Lista azioni/args
Come negli altri casi se mancano argomenti necessari sarà stampato a schermo un messaggio di errore.
- get_info
Restituisce una o più informazioni su un media appartenente all'installazione corrente, se non richiesta l'informazione singola ritorneranno tutte le informazioni come array. Le informazioni sono quelle del file attachment + varie organizzate per contesto: post, post_meta, attachment_metadata, attachment_thumb_url, dirname, files_paths.
$args:
- info - stringa/false - eventuale informazione singola da ottenere, ossia chiave nell'array di informazioni - default: false
Esempi
//ritorna tutte le info sul media 7016
MediaAction( $action='get_info', $media=7016, $args=[] );
//stessa cosa di
MediaAction( $action='get_info', $media='https://www.gigitopcinformatica.it/wp-content/uploads/hard-disk-interno.jpg.webp', $args=[] );
//stessa cosa di
MediaAction( $action='get_info', $media='https://www.gigitopcinformatica.it/wp-content/uploads/hard-disk-interno.jpg-200x200.webp', $args=[] );
//stessa cosa di
MediaAction( $action='get_info', $media='ftp://nomeutente@gigitopcinformatica.it/public_html/wp-content/uploads/hard-disk-interno.jpg-200x200.webp', $args=[] );
//ritorna i metadati relativi al media 7016
MediaAction( $action='get_info', $media=7016, $args=[ 'info'=>'attachment_metadata' ] );
- reset
Ricalcola e aggiorna i dati media in base al suo attachment o a un nuovo file che lo sostituirà. Nello specifico esegue queste operazioni:
- elimina le grandezze media correnti
- aggiorna il file collegato - è possibile sostituire il file tramite l'argomento file. - Nota: se il nuovo file non si trova nella cartella uploads di wordpress sarà copiato lì con nome univoco e, se necessario, sarà automaticamente convertito a webp
- aggiorna timestamp del file collegato
- ricrea le grandezze media
- aggiorna i metadati
e li sincronizza con la globale php$GLOBALS['gpci']['modules']['media']['actions']['update'] - aggiorna il mime
- aggiorna il guid
- se necessario rinomina il file originale jpeg/png e aggiorna il campo personalizzato che contiene il nome di fallback
- svuola la cache relativa al media tramite la funzione clean_attachment_cache
$args:
- file - stringa/false - eventuale file che sostituirà l'attachment e su cui saranno ricalcolate le nuove informazioni. E' possibile utilizzare percorsi locali/percorsi semplificati e url http/https/ftp. Se il file non esiste sarà utilizzato l'attachment corrente - default: file corrente
Esempi
//ricalcola e aggiorna il media 7016
MediaAction( $action='reset', $media=7016, $args=[] );
//aggiorna il media 7016 con un nuovo file
MediaAction( $action='reset', $media=7016, $args=[ 'file'=>'https://www.gigitopcinformatica.it/wp-content/uploads/hard-disk-interno.jpg.webp' ] );
//aggiorna il media 7016 con un nuovo file copiandolo prima nella cartella uploads
MediaAction( $action='reset', $media=7016, $args=[ 'file'=>'https://www.gigitopcinformatica.it/immagine.jpg' ] );
- update
Aggiorna i dati media relativi al post nel database, gli argomenti corrispondono ai campi da aggiornare. Se un argomento non fa riferimento a un campo previsto si suppone che sia riferito a un campo personalizzato, evitare quindi campi personalizzati con gli stessi id dei campi wordpress. Per ora questa azione ritornerà sempre true, verrà corretta in un secondo momento. I campi wordpress saranno aggiornati solo se diversi dal valore voluto, i campi metabox per ora saranno sempre aggiornati.
$args:
- wp_attachment_image_alt oppure alt - stringa/null - eventuale nuovo attributo alt del media - default: null
- post_title oppure title - stringa/null - eventuale nuovo attributo title del media - default: null
- post_excerpt oppure caption - stringa/null - eventuale nuova didascalia del media - default: null
- post_content oppure description - stringa/null - eventuale nuova descrizione del media - default: null
- media_url_original_image - Non usare! Questo campo verrà migrato in un secondo momento
Esempi
//aggiorna l'attributo alt del media con id 7016
MediaAction( $action='update', 7016, $args=[ 'alt'=>'nuovoalt' ] );
//aggiorna attributi alt, title, didascalia, descrizione e campo personalizzato con id miocampo del media con id 7016
MediaAction( $action='update', 7016, $args=[ 'alt'=>'nuovoalt', 'title'=>'nuovotitolo', 'caption'=>'nuovadidascalia', 'description'=>'nouvadescrizione', 'miocampo'=>'valore_campo_personalizzato' ] );
- delete
Elimina un media (sia files che database) tramite la funzione wordpress wp_delete_attachment.
$args:
- force_delete - booleano - argomento omonimo nella funzione di riferimento - default: false
Nota
Per abilitare il cestino media inserire il seguente codice nel file wp-config.php:
define( 'MEDIA_TRASH', true);
Esempi
//elimina il media 7016 (sposta il media in cestino se abilitato)
MediaAction( $action='delete', $media=7016, $args=[] );
//elimina il media 7016 permanentemente
MediaAction( $action='delete', $media=7016, $args=[ 'force_delete'=>true ] );
- convert
Converte un attachment come da funzione FileAction (azione convert) poi aggiorna i dati media e le grandezze derivate di conseguenza.
$args: come da funzione di riferimento con alcune modifiche:
- l'argomento overwrite sarà sempre settato su false, quindi la funzione non sovrascriverà mai altri files
- l'argomento delete_original è come impostazione predefinita su true, in questo modo se convertito a nuovo file il vecchio non sarà mantenuto
Dopo la conversione il media sarà sempre resettato (azione reset) per mantenere coerenza tra il database e i file
Esempi
//ridimensiona un media a 800px di larghezza
MediaAction( $action='convert', $media=7016, $args=[ 'width'=>800 ] );
- rename
Rinomina un media come da funzione FileAction (azione rename), nello specifico saranno rinominati:
- il file collegato
- le grandezze media
- l'eventuale file di fallback jpeg o png
$args: come da funzione di riferimento.
Dopo l'operazione il media sarà sempre resettato (azione reset) per mantenere coerenza tra il database e i file
Esempi
//ridimensiona un media a 800px di larghezza
MediaAction( $action='rename', $media=7016, $args=[ 'name'=>'nuovonome'] );
- rename
Rinomina un media come da funzione FileAction (azione rename), nello specifico saranno rinominati:
- il file collegato
- le grandezze media
- l'eventuale file di fallback jpeg o png
$args: come da funzione di riferimento.
Dopo l'operazione il media sarà sempre resettato (azione reset) per mantenere coerenza tra il database e i file
Esempi
//ridimensiona un media a 800px di larghezza
MediaAction( $action='rename', $media=7016, $args=[ 'name'=>'nuovonome'] );
FolderAction
Questa funzione esegue un'azione su una cartella locale esistente, attenzione in quanto funzionerà solo su cartelle, non files. Se passato un url http/https/ftp oppure un array rappresentante una cartella (come da funzione wp_upload_dir) sarà automaticamente convertito al percorso dela cartella.
Parametri
- action - stringa - azione che verrà eseguita dalla funzione - default:''
- folder - stringa - percorso/url assoluto/url ftp/scorciatoia della cartella su cui eseguire l'azione - default:''
- args - array associativo - argomenti richiesti dall'azione - default:[]
- disable_error_messages - booleano - se true disabilita i messaggi di errore - default: false
Return
False se l'azione non ha successo oppure non ha bisogno di essere eseguita, true/array/stringa se l'azione ha successo.
Lista azioni/args
Come negli altri casi se mancano argomenti necessari sarà stampato a schermo un messaggio di errore:
- get_info
Restituisce una o più informazioni su una cartella file. Se non richiesta l'informazione singola ritorneranno tutte le informazioni come array. Le informazioni sono:
| Chiave/informazione | Descrizione | Esempio |
|---|---|---|
| dirname | percorso della cartella che contiene la cartella bersaglio | /home2/utente/public_html/blog |
| basename | nome cartella | wp-content |
| filename | come sopra | wp-content |
$args:
- info - stringa/false - eventuale informazione singola da ottenere, ossia chiave nell'array di informazioni - default: false
Esempi
//ottiene tutte le informazioni sulla cartella
FolderAction( $action='get_info', $folder='/public_html/wp-content/uploads' );
//stessa cosa
FolderAction( $action='get_info', $folder='ftp://nomeutente@gigitopcinformatica.it/public_html/wp-content/uploads' );
//ottiene il percorso della cartella che contiene quella bersaglio
FolderAction( $action='get_info', $folder=ABSPATH.'/wp-content', $args=['info'=>'dirname'] );
//oppure
FolderAction( $action='get_info', $folder=ABSPATH.'/wp-content' )['dirname'];
- get_content
Restituisce il contenuto (files e sottocartelle) della cartella bersaglio ricorsivamente ritornando un array di percorsi.
$args:
- skip_dots - booleano - se saltare i . e i .. - default: false
- skip_folders - booleano - se saltare le sottocartelle (ricordarsi che saranno saltati anche i . e i .. inoltre non saranno compresi gli elementi nelle sottocartelle!!)- default: false
- skip_files - booleano - se saltare i files - default: false
- min_depth - numero intero - profondità minima (0 è la cartella bersaglio) - default: 0
- max_depth - numero intero - limite di profondità massima (0 è la cartella bersaglio). -1 significa nessun limite massimo - default: -1
- current_depth - numero intero - usato internamente per identificare la profondità corrente. Per ora non usare - default: 0
- limit - numero intero/-1 - numero massimo di elementi ritornati, -1 per nessun limite - default: -1
- offset - numero intero - numero di elementi da saltare - default: 0
- files_conditions - array di arrays - condizioni da applicare ai files per essere inclusi. Formati disponibili come funzione php CheckConditions - default: []
- return - stringa - elementi da ritornare: *(tutti), files (solo files), folders (solo cartelle senza i . e ..) - default: *
Esempi
//otteniamo tutti percorsi nella cartella uploads ricorsivamente
$contents = FolderAction( $action='get_content', $folder='https://www.gigitopcinformatica.com/wp-content/uploads/' );
//stessa cosa di
$contents = FolderAction( $action='get_content', $folder='wp_upload' );
//otteniamo soli i files
$files = FolderAction( $action='get_content', $folder='wp_upload', $args=[ 'return'=>'files' ] );
//otteniamo tutti percorsi nella cartella uploads, saltando i . i .. e NON inserendo sottocartelle
$contents = FolderAction( $action='get_content', $folder='https://www.gigitopcinformatica.com/wp-content/uploads/', $args=[ 'skip_dots'=>true, 'skip_files'=>false, 'skip_folders'=>false, 'min_depth'=>0, 'max_depth'=>0 ] );
//otteniamo da una cartella tutti ì files con estensione webp o png
$files = FolderAction( $action='get_content', $folder='wp_upload', $args=[ 'skip_dots'=>true, 'skip_folders'=>true ] );
$results = [];
foreach( $files as $file ){
$extension = FileAction( 'get_info', $file )['extension'] ?? '';
if( $extension == 'webp' || $extension == 'png' ){ $results[] = $file; }
}
print_rR( $results );
//stessa cosa di
$files = FolderAction( $action='get_content', $folder='wp_upload', $args=[ 'skip_dots'=>true, 'skip_folders'=>true, 'files_conditions'=>[ [ 'file,extension','==webp,==png', 'operator'=>'or' ] ] ] );
//stessa cosa di
$files = FolderAction( $action='get_content', $folder='wp_upload', $args=[ 'skip_dots'=>true, 'skip_folders'=>true, 'files_conditions'=>[
[ 'file,extension','webp' ],
[ 'file,extension','jpg' ],
'operator'=>'or'
] ] );
print_rR( $results );
- rename
Rinomina una cartella se non già esistente. Il nome della cartella file sarà sanificato dalla funzione sanitize_file_name. Ritorna true o false in caso di fallimento.
$args:
- name - stringa - nuovo nome della cartella - default: ''
Esempi
$result = FolderAction( $action='rename', $folder=ABSPATH.'wp-content/themes/gpci-child/private/php/auto-includes', $args=['name'=>'auto_includes'] );
//stessa cosa con scorciatoia e disabilita i messaggi di errore
$result = FolderAction( $action='rename', $folder='theme_child/private/php/auto-includes', $args=['name'=>'auto_includes', 'disable_error_messages'=>true] );
HookAction
Questa funzione esegue un'azione controllata basata su un filtro o azione wordpress.
Parametri
- $action - stringa - azione che verrà eseguita dalla funzione - default:''
- $args - array associativo - argomenti che saranno passati all'hook - default:''
- $id - stringa - identificativo dell'azione, serve nel caso che siano applicati filtri multipli allo stesso flusso di eecuzione - default:'id'
- $priority - numero intero - priorità dell'hook - default: 41
Return
True se l'azione ha successo, false altrimenti.
Lista azioni/args
Come negli altri casi se mancano argomenti necessari sarà stampato a schermo un messaggio di errore.
- set_upload_dir
Imposta la cartella di upload tramite l'hook wp_upload_dir. E' meglio utilizzare questa azione globalmente, per applicarla ai singoli files affidarsi al modulo media che utilizza questa azione internamente nei vari hooks coinvolti.
$args:
- upload_dir - stringa - percorso della cartella di destinazione del file. E' possibile utilizzare un percorso semplificato come da azione ValueAction (azione ConvertStringToPath) - default: ''
Esempi
//Cambia la cartella di upload globalmente
HookAction( $action='SetUploadDir', $args=[ 'upload_dir'=>ABSPATH.'cartella_personalizzata'] );
//stessa cosa
HookAction( $action='SetUploadDir', $args=[ 'upload_dir'=>'site_root/cartella_personalizzata'] );
//cambia la cartella solo per un certo form: probabilmente il codice php del form sarà preceduto da questa azione e chiuso dall'azione ResetUploadDir
//questo è solo un esempio per capire il funzionamento in quanto utilizzandolo senza modulo media lo stesso non sarà aggiornato correttamente cercandolo dalla libreria media nel backend
HookAction( $action='SetUploadDir', $args=[ 'upload_dir'=>'site_root/cartella_personalizzata'], $id='id_personalizzato', $priority=51 );
- reset_upload_dir
Resetta la cartella di upload a quella originale. Ricordarsi, se utilizzati parametri personalizzati, di impostare id e priorità come per azione precedente.
$args: nessuno.
Esempi
//Resetta la cartella di upload
HookAction( $action='ResetUploadDir' );
//Resetta la cartella di upload alla fine del caricamento form come da esempio precedente
HookAction( $action='ResetUploadDir', $args=[], $id='id_personalizzato', $priority=51 );
GetField
Questa funzione prova ad ottenere un valore da conversioni dinamiche multiple fermandosi appena trova un valore. Se il valore è null (quindi non è un campo wordpress supportato oppure non è un campo personalizzato registrato) va avanti a eseguire la conversione dinamica successiva. Attenzione in quanto la conversione dinamica di tipo wordpress deve essere ancora moficata per restituire null in tutti i casi non conformi. I messaggi di errore sono automaticamente disabilitati tramite l'argomento disable_error_messages (a parte, per ora, nei casi ancora da correggere).
Parametri
- $field - stringa - campo da ottenere. Si specifica esattamente come la conversione dinamica ma senza il tipo - default: null
- $dynamic_conversions - stringa/array di stringhe- conversioni dinamiche da eseguire - default: [ 'wp', 'mb' ]
- $args - array associativo - eventuali argomenti aggiuntivi da passare alle conversioni dinamiche - default: []
Return
Valore trovato oppure null.
Esempi
//ritorna il titolo del post
$field = GetField( $field='title' );
//stessa cosa cercando solo nei campi di tipo wordpress
$field = GetField( $field='title', $dynamic_conversions='wp', $args=[] );
//ritorna un campo personalizzato
$field = GetField( $field='campo_personalizzato' );
//ritorna un campo personalizzato del post con id 1000
$field = GetField( $field='campo_personalizzato,1000' );
//stessa cosa cercando solo nei campi personalizzati
$field = GetField( $field='campo_personalizzato,1000', $dynamic_conversions='mb' );
//stessa cosa ma cambia il tipo di valore ottenuto
$field = GetField( $field='campo_personalizzato,1000', $dynamic_conversions='mb_value' );
Documentazione rilevante
QueryAction
Questa funzione esegue un'azione inerente una query. Per una panoramica completa dei parametri è molto importante leggere anche la pagina Queries.
Parametri
- action - stringa - azione che verrà eseguita dalla funzione - default:''
- args - array associativo - argomenti della query (se generata al momento) e argomenti richiesti dall'azione - default:[]
Return
In base all'azione, false in caso di parametri errati o mancanti.
Lista azioni/args
Come negli altri casi se mancano argomenti necessari sarà stampato a schermo un messaggio di errore.
- get_query
Genera una query oppure ne ritorna una passata tramite l'apposito argomento. In tutti e 2 i casi converte il contenuto (se valido) da oggetto ad array. Questa azione è la base delle successive, ritorna tutta la query.
$args:
- query - oggetto query/null - query da ritornare invece di generarne una (probabilmente sarà la query da cui ottenere informazioni o da modificare) - default: null
Esempi
$query = QueryAction( $action='get_query', $args=[ 'post_type'=>'esercizi', 'posts_per_page'=>-1 ] );
- get_posts
Ritorna i posts risultanti dalla query sotto forma di array.
$args: nessuno.
Esempi
$posts = QueryAction( $action='get_posts', $args=[ 'post_type'=>'esercizi', 'posts_per_page'=>-1 ] ) ?? [];
foreach( $posts as $post){
$ID = $post['ID'] ?? 0;
//altre istruzioni
}
//oppure da una query già esistente (esempio in un hook o query creata da WP_Query)
$posts = QueryAction( $action='get_posts', $args=[ 'query'=>$query ] ) ?? [];
- get_posts_field
Ottiene un array contentente il campo specificato preso da ogni post risultante dalla query. Se il campo è interno a post_meta o relationship le informazioni saranno aggiunte automaticamente.
$args:
- field - stringa - campo da ottenere nel post array. E' possibile ottenere campi nested avanzando con virgole - default:''
Esempi
//ottiene gli id dei posts
$ids = QueryAction( $action='get_posts_field', $args=[ 'field'=>'id', 'post_type'=>'esercizi', 'posts_per_page'=>-1 ] );
foreach( $ids as $id){ /*istruzioni*/ }
//ottiene un campo personalizzato dai posts
$custom_fields = QueryAction( $action='get_posts_field', $args=[ 'field'=>'post_meta,campo_personalizzato', 'post_type'=>'esercizi', 'posts_per_page'=>-1 ] );
foreach( $custom_fields as $custom_field ){ /*istruzioni*/ }
//ottiene gli esercizi collegati agli schemi tramite la relazione esercizio-a-schema
$posts = QueryAction( $action='get_posts_field', $args=[ 'field'=>'relationship,esercizio-a-schema', 'post_type'=>'schema-grammaticale', 'posts_per_page'=>-1 ] );
foreach( $posts as $post ){ /*istruzioni*/ }
- get_posts_id
Esegue semplicemente l'azione sopra (get_posts_field) con il parametro field preconfigurato per ritornare tutti gli ID dei posts.
$args: nessuno aggiuntivo.
Esempi
//ottiene gli id dei posts
$ids = QueryAction( $action='get_posts_id', $args=[ 'post_type'=>'esercizi', 'posts_per_page'=>-1 ] );
foreach( $ids as $id){ /*istruzioni*/ }
- set_params
Imposta uno o più parametri di una query. Ritorna l'array di argomenti della query modificati.
$args:
- query - array associativo - array dei parametri della query
Tutti gli argomenti inseriti (escluso query) in formato chiave/valore diventeranno i nuovi argomenti della query da modificare.
Esempi
QueryAction( $action='set_params', $args=[ 'query'=>$query, 'post_type'=>'page' ] );
//esempio in un filtro contenuto
function modifica_query(){
$query = $GLOBALS['gpci']['render']['query'];
$query = QueryAction( 'set_params', [ 'query'=>$query , 'post_type'=>'esercizi' ] );
return $query ;
}
RelationshipAction
Questa funzione esegue un'azione su una o più relazioni.
Parametri
- $action - stringa - azione che verrà eseguita dalla funzione - default:''
- $id - stringa/null - id della relazione su cui effettuare l'azione. * per tutte le relazioni (solo certe azioni) - default: null
- $args - array associativo - argomenti richiesti dall'azione - default:[]
Return
In base all'azione, false in caso di parametri errati o mancanti.
Lista azioni/args
Come negli altri casi se mancano argomenti necessari sarà stampato a schermo un messaggio di errore.
- get_relationship
Ottiene le impostazioni relative una o più relazioni.
$args: nessuno.
Esempi
//ottiene le impostazioni di tutte le relazioni correnti
$settings = RelationshipAction( $action='get_relationship', $id='*' );
//ottiene le impostazioni della relazione con id: id_relazione
$settings = RelationshipAction( $action='get_relationship', $id='id_relazione' );
- get_connected_posts
Ottiene gli elementi connessi a un altro (per ora solo relazioni tra posts). Ritorna un array di posts /array vuoto se nessun elemento presente. Gli elementi sono ottenuti tramite una QueryAction.
$args:
- from - numero intero/stringa/oggetto - come da funzione di riferimento
- to - numero intero/stringa/oggetto - come da funzione di riferimento
- from_to - numero intero/stringa/oggetto - se specificato questo argomento sarà provata una query utilizzando il parametro from, se non ha successo sarà provata una seconda query utilizzando il parametro to
Tutti gli argomenti inseriti (esclusi quelli appena descritti) in formato chiave/valore diventeranno i nuovi argomenti della query da modificare.
Esempi
$posts = RelationshipAction( $action='get_connected_posts', $id='esercizio-a-schema', $args=[ 'from'=>6920, 'post_type'=>'esercizi', 'posts_per_page'=>-1 ] );
foreach( $posts as $post ){ /*istruzioni*/ }
- get_connected_posts_field
Ottiene un array di campi ottenuti da elementi connessi. Gli elementi sono ottenuti tramite l'azione get_connected_posts.
$args:
- field - stringa - campo da ottenere nel post array. E' possibile ottenere campi nested avanzando con virgole - default:''
Esempi
$fields = RelationshipAction( $action='get_connected_posts_field', $id='esercizio_schema', $args=[ 'field'=>'post_title', 'from_to'=>6920, 'post_type'=>'esercizi', 'posts_per_page'=>-1 ] );
foreach( $fields as $field ){ /*istruzioni*/ }
//ottiene campi personalizzati (in questo caso gli argomenti utili per visualizzarli sono impostati automaticamente)
$fields = RelationshipAction( $action='get_connected_posts_field', $id='esercizio_schema', $args=[ 'field'=>'post_meta,livello_esercizio', 'from_to'=>6920, 'post_type'=>'esercizi', 'posts_per_page'=>-1 ] );
foreach( $fields as $field ){ /*istruzioni*/ }
- add
Aggiunge una relazione tra 2 elementi come da funzione MB_Relationships_API::add. Quest'azione per ora ritorna sempre true.
$args:
- id - stringa - id della relazione
- from - come da funzione di riferimento
- to - come da funzione di riferimento
- from_to - booleano - se true la relazione sarà aggiunta anche invertendo i 2 lati from/to, quindi attenzione se la relazione è reciproca sarà aggiunta 2 volte - default: false
- order_from - come da funzione di riferimento - default:1
- order_to - come da funzione di riferimento - default:1
Esempi
//se si conosce l'esatta direzione della relazione
RelationshipAction( $action='add', $id='esercizio-a-schema', $args=[ 'from'=>get_the_ID(), 'to'=>6920 ] );
//se non si conosce l'esatta direzione della relazione
RelationshipAction( $action='add', $id='esercizio-a-schema', $args=[ 'from'=>get_the_ID(), 'to'=>6920, 'from_to'=>true ] );
- delete
Rimuove una relazione tra 2 o più elementi come da funzione MB_Relationships_API::delete. Quest'azione per ora ritorna sempre true.
$args:
- id - stringa - id della relazione
- from - come da funzione di riferimento
- to - come da funzione di riferimento
- from_to - booleano - se true la relazione sarà eliminata anche invertendo i 2 lati from/to - default: false
E' possibile specificare from o to come arrays di numeri interi (solo uno per volta), in quel caso saranno eliminate relazioni multiple con un solo giro di funzione. E' possibile anche specificare from o to come stringa * (solo uno per volta), saranno eliminate tutte le relazioni impostate con l'altro elemento specificato (usare con parsimonia!).
Esempi
//se si conosce l'esatta direzione della relazione
RelationshipAction( $action='delete', $id='esercizio-a-schema', $args=[ 'from'=>get_the_ID(), 'to'=>6920 ] );
//se non si conosce l'esatta direzione della relazione
RelationshipAction( $action='delete', $id='esercizio-a-schema', $args=[ 'from'=>get_the_ID(), 'to'=>6920, 'from_to'=>true ] );
//eliminazione di relazioni multiple definite
RelationshipAction( $action='delete', $id='esercizio-a-schema', $args=[ 'from'=>get_the_ID(), 'to'=>[ 6920,6921,6922 ], 'from_to'=>true ] );
//eliminazione di tutte le relazioni esercizio-a-schema con il post corrente
RelationshipAction( $action='delete', $id='esercizio-a-schema', $args=[ 'from'=get_the_ID(), 'to'=>'*', 'from_to'=>true ] );
PostAction
Questa funzione esegue un'azione su un post. Sarà controllata l'esistenza del post prima di eseguire (esclusa l'azione insert).
Parametri
- action - stringa - azione che verrà eseguita dalla funzione - default:''
- id - stringa/numero intero - se id sarà utilizzato il post corrente - default: id
- args - array associativo - argomenti richiesti dall'azione - default:[]
Return
In base all'azione, false in caso di parametri errati o mancanti.
Lista azioni/args
Come negli altri casi se mancano argomenti necessari sarà stampato a schermo un messaggio di errore.
- get_id
Ottiene l'id del post corrente in contesti aggiuntivi alla funzione php get_the_ID.
$args: Nessuno.
Esempi
PostAction( $action='get_id' );
- get
Ottiene il post sotto forma di array. E possibile aggiungere informazioni su campi personalizzati e relazioni come documentato nelle queries(non incapsulare nella chiave post!).
$args:
- info - stringa/false - eventuale informazione singola da ottenere, ossia chiave nell'array di informazioni - default: false
- unset - stringa/array di stringhe - eventuale/i informazione da rimuovere - default: []
- get_post_meta - stringa/null - se aggiungere i post_meta alle informazioni - default: null
- relationship - stringa/null - se aggiungere le relzioni alle informazioni - default: null
Esempi
//ritorna il post corrente
$post = PostAction( $action='get' );
//aggiunge tutti i campi personalizzati
$post = PostAction( $action='get', $id='id', $args=[ 'get_post_meta'=>'*'] );
//aggiunge solo un campo personalizzato
$post = PostAction( $action='get', $id='id', $args=[ 'get_post_meta'=>'id_campo_personalizzato' ] );
//aggiunge tutte le relazioni
$post = PostAction( $action='get', $id='id', $args=[ 'get_relationship'=>'*'] );
//esclude il post_content
$post = PostAction( $action='get', $id='id', $args=[ 'unset'=>'post_content' ] );
//ritorna il post con id 1000
$post = PostAction( $action='get', $id=1000 );
- get_field
Ottiene un campo di tipo wordpress oppure metabox esattamente come da funzione GetField.
$args: come da funzione di riferimento.
Esempi
//ritorna il riassunto del post corrente
$field = PostAction( 'get_field', $id='id', [ 'field'=>'excerpt' ] ) );
//ritorna un campo personalizzato ralativo al post corrente
$field = PostAction( $action='get_info', $id='id', [ 'field'=>'campo_personalizzato' ] ););
- get_connected_posts
Ottiene gli elementi connessi tramite una relazione da/a un elemento bersaglio come da funzione RelationshipAction(get_connected).
$args: come da funzione di riferimento. Se from o to o from_to sono stringhe con valore id saranno impostati come il post bersaglio.
Esempi
PostAction( $action='get_connected_posts', $id='id', $args=[ 'relationship_id'=>'esercizio_a_schema', 'from'=>6946 ] );
PostAction( $action='get_connected_posts', $id='id', $args=[ 'relationship_id'=>'esercizio_a_schema', 'to'=>6946 ] );
PostAction( $action='get_connected_posts', $id='id', $args=[ 'relationship_id'=>'esercizio-a-schema', 'from'=>'id' ] );
PostAction( $action='get_connected_posts', $id='id', $args=[ 'relationship_id'=>'esercizio-a-schema','from_to'=>'id' ] )
- add_relationship
Aggiunge una relazione al post verso un oggetto bersaglio come da funzione RelationshipAction(add). Quest'azione per ora ritorna sempre true (eccetto parametri mancanti).
$args: come da funzione di riferimento. Se from o to sono stringhe con valore id saranno impostati come il post bersaglio.
Esempi
PostAction( $action='add_relationship', $id='id', $args=[ 'relationship_id'=>'esercizio-a-schema', 'from'=>'id', 'to'=>6946, 'from_to'=>true ] )
- delete_relationship
Elimina una relazionecon il post bersaglio come da funzione RelationshipAction(delete). Quest'azione per ora ritorna sempre true (eccetto parametri mancanti).
$args: come da funzione di riferimento. Se from o to sono stringhe con valore id saranno impostati come il post bersaglio.
Esempi
PostAction( $action='delete_relationship', $id='id', $args=[ 'relationship_id'=>'esercizio-a-schema', 'from'=>'id', 'to'=>6946, 'from_to'=>true ] );
//elimina tutte le relazioni esercizio-a-schema con il post corrente
PostAction( $action='delete_relationship', $id='id', $args=[ 'relationship_id'=>'esercizio-a-schema', 'from'=>get_the_ID(), 'to'=>'*', 'from_to'=>true ] );
- set_post_type
Imposta/cambia il post type.
$args:
- post_type - stringa - post type al quale sarà impostato il post
Esempi
PostAction( $action='set_post_type', $id='id', $args=[ 'post_type'=>'post_type' ] );
- insert
Crea un nuovo post tramite la funzione php wp_insert_post. Non utilizzare per aggiornare un post corrente in quanto per ora non funzionerà. $id sarà automaticamente impostato su null.
$args: come da funzione di riferimento.
Esempi
PostAction( $action='insert', $id=null, $args=[
'post_type' => 'classe',
'post_title' => "Classe di $nome $cognome",
'post_content' => $contenuto,
'post_status' => 'draft',
'meta_input' => [
'id_campo_personalizzato1' => $valore1,
]
] );
- update
Aggiorna il post bersaglio tramite la funzione php wp_update_post. La chiave ID sarà automaticamente impostata all'id bersaglio.
$args: come da funzione di riferimento.
Esempi
PostAction( $action='update', $id=1000, $args=[
'post_title' => $nuovo_titolo,
'post_content' => $nuovo_contenuto,
'meta_input' => [
'id_campo_personalizzato1' => $valore1,
]
] );
FieldsInfo
Questa funzione ritorna informazioni su uno o più campi registrati sia dal core wordpress che da metabox. Le informazioni sui campi metabox sono ricavate dalla globale php $GLOBALS['gpci']['meta_box_fields'] a sua volta ricavata dalla funzione php rwmb_get_registry ma con modifiche di ordinamento e aggiunta di informazioni personalizzate. Le informazioni sui campi wodpress per ora sono molto basilari e sono ottenute tramite queries dirette al database (utilizzare quindi per questi soltanto come debugging), probabilmente ci saranno modifiche per unificare le informazioni con i campi metabox.
Parametri
- $query - array associativo - eventuale query per filtrare i campi, sono semplicemente le chiavi dell'array. Per ora i filtri saranno collegati sempre dall'operatore AND - default:[]
Vedere esempi per alcune chiavi base ma piuttosto importanti
Return
Array di arrays associativi.
Esempi
//ritorna informazioni su tutti i campi registrati
FieldsInfo();
//ritorna informazioni su tutti i campi metabox registrati con id campo_personalizzato
FieldsInfo( [ 'id'=>'campo_personalizzato' ] );
//ritorna informazioni su tutti i campi metabox registrati ai post types
FieldsInfo( [ 'meta_box_location_type'=>'post_types' ] );
//ritorna informazioni su tutti i campi metabox registrati ai post types e appartenenti alla metabox: metaboxid
FieldsInfo( [ 'meta_box_location_type'=>'post_types', 'meta_box_id'=>'metaboxid' ] );
//ritorna informazioni su tutti i campi metabox registrati dall'amministratore del sito
FieldsInfo( [ 'registered_by'=>'custom' ] );
//ritorna informazioni su tutti i campi wordpress
FieldsInfo( [ 'registered_by'=>'wp' ] );
//ritorna informazioni su tutti i campi registrati dal framework
FieldsInfo( [ 'registered_by'=>'gpci' ] );
//ritorna informazioni sul campo metabox registrato dall'amministratore del sito con id campo_personalizzato
FieldsInfo( [ 'registered_by'=>'custom', 'id'=>'campo_personalizzato' ] );
//ritorna informazioni su tutti i campi wordpress
FieldsInfo( [ 'registered_by'=>'wp' ] );
//ritorna informazioni su tutti i campi registrati dal framework e dall'amministratore del sito
FieldsInfo( [ 'registered_by'=>[ 'gpci', 'custom' ] );
MetaboxAction
Questa funzione esegue un'azione inerente una metabox oppure un campo al suo interno.
Parametri
- action - stringa - azione che verrà eseguita dalla funzione - default:''
- args - array associativo - argomenti richiesti dall'azione - default:[]
Argomenti comuni a tutte le azioni
- condition - espressione con risultato booleano - se false l'azione non sarà eseguita - default: true
Return
In base all'azione, valore vuoto se la condizione non passa (in base al valore originale config), null in caso di fallimento.
Lista azioni/args
Come negli altri casi se mancano argomenti necessari sarà stampato a schermo un messaggio di errore.
- return_config
Ritorna la configurazione della metabox o del campo, da usare in fase di registrazione.
$args:
- config - valore della metabox o del campo da passare a metabox (solitamente array o stringhe) - default: null
Esempi
//ritorna codice css nella pagina impostazioni, stringa vuota altrimenti
[
'type' => 'custom_html',
'std' => MetaboxAction( 'return_config', [ 'condition'=>( $_GET['page'] ?? false ) === 'gpci_core_options_ajaxactions', 'config'=>'<style>/**/</style>
],
- get_fallback_config
Ottiene il valore vuoto di fallback (in base all'argomento config) in caso di condizione non passata. Utilizzata internamente.
$args:
- config - come sopra
Esempi
$config = MetaboxAction( 'get_fallback_config', [ 'config'=>$config ] );
ElementAction
Questa funzione mappa semplicemente i suoi argomenti verso la funzione javascript ElementAction. Serve a generare codice javascript da php per manipolare il DOM. Probabilmente sarà aggiunta allla conversione dinamica per essere utilizzata in vari contesti semplificati.
Parametri
Stessi della funzione di riferimento, con l'aggiunta di alcune chiavi al parametro args:
- add_script_tags - aggiunge automaticamente i tags script. Serve se utilizzata esternamente a un contesto javascript
Return
Nulla.
Esempi
//aggiunge un elemento dopo un bersaglio ogni volta che si clicca su un pulsante
echo ElementAction( $action='add_element', $element='#id_bersaglio', $args=[ 'element'=>'<h2>aggiunto!</h2>', 'wait_event'=>'click', 'event_target'=>'#id_pulsante', 'event_repeat'=>true ] );
//stessa cosa ma aggiunge automaticamente i tags script
echo ElementAction( $action='add_element', $element='#id_bersaglio', $args=[ 'element'=>'<h2>aggiunto!</h2>', 'wait_event'=>'click', 'event_target'=>'#id_pulsante', 'event_repeat'=>true, 'add_script_tags'=>true, ] );
CheckConditions
Questa funzione controlla una o più condizioni tentando di capire il formato di ognuna.
Parametri
- $conditions - array associativo/array di arrays associativi/booleano - condizione/i da controllare. Può ospitare anche la chiave operator per specificare la relazione tra condizioni multiple (AND oppure OR, default:AND). Vedere note per i formati accettati - default:[]
Note
I formati accettati per ogni condizione sono multipli, vedere gli esempi.
Return
Verranno eseguiti questi controlli:
- se le condizioni non sono in formato array ma booleano ritornerà il valore
- se l'array delle condizioni è vuoto si suppone che non ci sia una condizione da controllare, quindi ritornerà true
- se l'array delle condizioni è un array di varie condizioni il cui formato è riconosciuto controllerà, in base all'operatore, che le condizioni siano tutte rispettate. Ritornerà quindi il risultato
- se l'array delle condizioni è una condizione singola il cui formato è riconosciuto ritornerà il risultato del controllo
- se un qualsiasi formato non è identificato verrà stampato un ErrorMessage e ritornerà false
Esempi
//controllo basico (risultato: true)
$result = CheckConditions( $condition=[ 'stringa1'=>'stringa1' ] );
//controllo basico con condizioni multiple (risultato: false)
$result = CheckConditions( $condition=[
['stringa1'=>'stringa1'],
['stringa1'=>'stringa2']
);
//stessa cosa ma risultato: true (grazie all'operatore)
$result = CheckConditions( $condition=[
'operator'=>'or',
['stringa1'=>'stringa1'],
['stringa1'=>'stringa2']
] );
//controllo in formato booleano singolo (risultato: true se si è nel frontend)
$result = CheckConditions( $condition=GetContext('is_frontend') );
//controllo in formato array di booleani con operatore OR (risultato: true)
$result = CheckConditions( $conditions=[ true, false, 'operator'=>'or' ] );
//controlla una condizione in formato conversione dinamica
$result = CheckConditions( $condition=[ 'type1'=>'wp', 'content1'=>'title', 'comparator'=>'==', 'type2'=>'string', 'content2'=>'Titolo pagina' ] );
//controlla una condizione in formato conversione dinamica aggiungendo argomenti aggiuntivi
$condition = CheckConditions( $condition=[ 'type1'=>'mb', 'content1'=>'campo_personalizzato', 'args1'=>[ 'nesting'=>0 ], 'comparator'=>'==', 'type2'=>'string', 'content2'=>'Titolo pagina' ] );
//controlla una condizione in formato comparazione diretta
$result = CheckConditions( $condition=[ 'content'=>get_the_title(), 'comparator'=>'==', 'content2'=>'Titolo pagina' ] );
//controlla una condizione in formato chiave=>valore
$result = CheckConditions( $condition=[ 'file,extension'=>'webp' ] );
//o ancora
$result = CheckConditions( $condition=[ 'file,extension'=>'!=webp' ] );
//formato semplificato
$result = CheckConditions( $condition=[ 'wp,post_type'=>'!=page', 'wp,post_type,id'=>'!=post' ] );
//stessa cosa di
$result = CheckConditions( $condition=[ 'wp,post_type'=>'!=page,!=post' ] );
//controlla se 100 è maggiore di 90
$result = CheckConditions( $condition=[ 'integer,100'=>'>90' ] );
//controlla condizioni multiple
$result = CheckConditions( $conditions=[
[ 'wp,title'=>'===Titolo post1,===Titolo post2', 'operator'=>'OR' ],
[ 'content1'=>GetField('title'), 'comparator'=>'===', 'content2'=>'Titolo post3' ],
'operator'=>'OR'
] );
RemoteRequest
Questa funzione esegue una richiesta remota con risposta. E' una funzione contenitore di wp_remote_request con opzioni aggiuntive. Il metodo default della richiesta è GET.
Parametri
- $url - stringa/array associativo - url verso il quale eseguire la richiesta - default:'' - Se array può contenere le seguenti chiavi:
- url - stringa - eventuale url alla root del sito di riferimento (se impostato non saranno usate le chiavi scheme/host/path e port)
- scheme - stringa - http/https, come per funzioni php parse_url o wp_parse_url
- host - stringa - dominio o indirizzo IP di riferimento
- path - stringa - percorso relativo
- port - numero intero/stringa - eventuale porta di ingresso
- endpoint - stringa - endpoint da aggiungere all'url base (che deve essere la root del sito), può essere:
-- wp_rest - percorso wp-json/wp/v2/ - è possibile utilizzare post_type negli argomenti per avanzare
-- wp_admin_ajax - percorso wp-admin/admin-ajax.php
-- gpci_launcher_ajax - percorso per il file launcher, aggiunge i parametri per eseguire un'azione ajax
-- se altro valore sarà semplicemente aggiunto all'url base
l'url finale sarà sempre normalizzato tramite la funzione php trailingslashit prima di aggiungere l'endpoint
- action - stringa - azione da applicare se l'endpoint è wp_admin_ajax o gpci_launcher_ajax
- query - array associativo/stringa - eventuali query args aggiuntive (saranno aggiunte indipendentemente dal method e endpoint)
- gpci_ajaxaction_args - array associativo - eventuali argomenti aggiuntivi della conversione dinamica - $request_args - array associativo - argomenti che saranno inseriti nella richiesta direttamente (come header, method e body) - default: []
- $payload - array associativo - argomenti che saranno inseriti nella richiesta ma mappati in base al method(nel body per POST, in query per GET). Quando possibile è molto più semplice usare questo argomento che scriverli manualmente - default: []
- $extra_args - array associativo - argomenti aggiuntivi che saranno utilizzati nella funzione ma non inseriti nella richiesta, servono ad ottenere e manipolare i valori di ingresso e ritorno - default: []
contiene le seguenti chiavi:
- disable_error_messages - booleano - disabilita i messaggi di errore - default: false
- body_auto_json - booleano - converte il body a json (se non lo è già) e imposta le headers di conseguenza (se non già impostate) - default: true
- fail_on_error_code - booleano - controlla il codice risposta e, in caso di fallimento (>=400), stampa un messaggio di errore e ritorna false - default: true
- normalize_response - booleano - converte il body della risposta ad array se json e converte le headers dalla risposta ad array se oggetto - default: true
- return - stringa - cosa ritornare (default: normal):
-- args - la chiamata non sarà inoltrata ma saranno ritornati gli argomenti che sarebbero inviati (serve a verificare prima di eseguire chiamate)
-- normal - response_code + headers + body
-- response_code
-- headers
-- body
-- response - risposta grezza
è possibile aggiungere nesting se la stringa return contiene almeno una virgola, inoltre se la stringa inizia per virgola il nesting sarà un derivato di normal (vedere esempi)
Return
In base a $extra_args['return'], se non specificato sarà normal, quindi un array associativo contenente:
- codice risposta
- headers risposta
- body risposta
Esempi
Ci sono svariati modi di utilizzare la funzione ottenendo lo stesso risultato, qui inserirò soltanto quelli più semplici e utili a fare capire il funzionamento della funzione:
Esempi
//utilizzo base
$response = RemoteRequest( $url='https://pokeapi.co/api/v2/pokemon/' );
//stessa cosa ma con wp_parse_url
$url = wp_parse_url( 'https://pokeapi.co/api/v2/pokemon/' );
$response = RemoteRequest( $url );
//utilizzo base specificando manualmente richiesta, headers e body
$response = RemoteRequest( $url='https://sito.it/', $request_args=[
'method' => 'POST',
'headers' => [ 'Content-Type'=>'application/json' ],
'body' => [ 'text'=>'Contenuto testuale' ]
] );
//richiesta di tipo GET con parametri
$response = RemoteRequest( $url=[ 'url'=>'https://pokeapi.co/api/v2/pokemon/', 'query'=>[ 'limit'=>2 ] ] );
//stessa cosa di
$response = RemoteRequest( $url='https://pokeapi.co/api/v2/pokemon/', $request_args=[], $payload=[ 'limit'=>2 ] );
//webhook con servizio esterno, metodo POST
$response = RemoteRequest( $url='https://webhook.ottokit.com/ottokit/id_webhook', $request_args=[
'method'=>'POST',
'body'=>[ 'text'=>'Contenuto testuale' ]
] );
//stessa cosa di
$response = RemoteRequest( $url='https://webhook.ottokit.com/ottokit/id_webhook', $request_args=[ 'method'=>'POST' ], $payload=[ 'text'=>'Contenuto testuale' ] );
//test di parametri senza invio della richiesta
$response = RemoteRequest( $url='https://webhook.ottokit.com/ottokit/id_webhook', $request_args=[ 'method'=>'POST' ], $payload=[ 'text'=>'Contenuto testuale' ], $extra_args=['return'=>'args'] );
//richiesta rest di ricette su un blog di cucina, visualizziamo gli endpoint e gli argomenti
$response = RemoteRequest(
$url = [ 'url'=>'https://www.sito_cucina.com/blog/', 'endpoint'=>'wp_rest' ],
$request_args = [],
$payload = [],
$extra_args = ['return'=>'normal']
);
//ora otteniamo i links di 5 ricette, saltando le prime 2
$response = RemoteRequest(
$url = [ 'url'=>'https://www.sito_cucina.com/blog/', 'endpoint'=>'wp_rest' ],
$request_args = [],
$payload = [ 'post_type'=>'ricetta', 'per_page'=>5, 'offset'=>2 ],
$extra_args = ['return'=>'normal,body,*,link'] // stessa cosa di
//$extra_args = ['return'=>',body,*,link']
);
//ora generiamo un'azione ajax verso il sito corrente con cifratura e argomenti personalizzati, è importante notare che in questo caso il nonce NON sarà verificato
$GLOBALS['gpci']['config']['php']['ajax']['action'][] = [
'id' => 'id_azione',
'method' => 'GET', //oppure 'POST'
'encryption' => [ 'id'=>'id_cifratura' ],
//oppure la cifratura diretta
'encryption' => [ 'cipher'=>'aes-128-cbc', 'secret_key'=>'chiave_segreta_16_caratteri', 'iv'=>'altra_chiave_segreta_16_caratteri' ],
'function' => function(){
//istruzioni e return
}
];
$response = RemoteRequest( $url=[ 'url'=>'https://root_sito_corrente', 'endpoint'=>'gpci_launcher_ajax', 'action'=>'id_azione', 'gpci_ajaxaction_args'=>[ 'custom'=>['chiave'=>'valore'] ] ] );
//stessa cosa ma verso un altro sito, l'azione ajax va configurata sul sito bersaglio
$response = RemoteRequest(
$url = [
'url'=>'https://root_sito_bersaglio',
'endpoint'=>'gpci_launcher_ajax',
'action'=>'id_azione',
'gpci_ajaxaction_args'=>[ 'custom'=>['chiave'=>'valore'] ],
'encryption' => [
'cipher' => 'aes-128-cbc',
'secret_key' => 'chiave_16_caratteri',
'iv' => 'altra_chiave_16_caratteri',
//oppure un id:
'id' => 'id_cifratura'
]
]
);
//richiesta remota verso un'azione ajax impostata tramite l'hook wp_ajax_nopriv_action
//1.impostare l'azione sul sito bersaglio
add_action( 'wp_ajax_nopriv_azione_da_chiamare', function(){
//primi controlli per filtrare
$parametro1 = $_POST['parametro1'];
$parametro1 = sanitize_text_field( $parametro1 );
//istruzioni da eseguire
$response = 'risposta';
wp_die( $response );
} );
//2.chiamare l'azione dal sito remoto
$response = RemoteRequest(
$url = [
'url' => 'https://root_sito_bersaglio',
'endpoint' => 'wp_admin_ajax',
'action' => 'azione_da_chiamare'
],
$request_args = [ 'method'=>'POST' ],
$payload = [
'parametro1' => 'valore_parametro',
],
);
RunCronJobs
Questa funzione esegue uno o più lavori cron. Prima di essere effettivamente svolti saranno valutate le condizioni.
Parametri
- $cron_jobs - stringa/array di stringhe - lavori da eseguire (previo controllo condizioni). Se stringa può essere *(tutti i lavori) o un id lavoro o vari lavori separati da virgola- default:[]
Return
Array di risposte.
Esempi
//tenta l'esecuzione di tutti i lavori cron
$responses = RunCronJobs( '*' );
//tenta l'esecuzione di un determinato lavoro cron
$responses = RunCronJobs( 'lavoro1' );
//tenta l'esecuzione di due determinati lavori cron
$responses = RunCronJobs( 'lavoro1,lavoro2' );
//oppure
$responses = RunCronJobs( ['lavoro1', 'lavoro2'] );
OptionAction
Questa funzione esegue un'azione inerente un'opzione nel database.
Parametri
- action - stringa - azione che verrà eseguita dalla funzione - default:''
- option- stringa - id opzione su cui eseguire l'azione - default:''
- args - array associativo - argomenti richiesti dall'azione - default:[]
Return
In base all'azione.
Argomenti comuni a tutte le azioni
- disable_error_messages - booleano - se disabilitare i mesaggi di errore - default: false
Lista azioni/args
Come negli altri casi se mancano argomenti necessari sarà stampato a schermo un messaggio di errore e la funzione ritornerà false.
- get
Ottiene il valore di un 'opzione tramite la funzione php get_option. Il valore default (se non esiste l'opzione) è sempre impostato su null.
$args: nessuno.
Esempi
$option = OptionAction( $action='get', $option='gpci-options-redirect' );
- delete_option
Elimina il valore di un'opzione come da funzione php delete_option. Questa azione ritornerà true se l'opzione è stata eliminata, false altrimenti.
$args: nessuno.
Esempi
$option = OptionAction( $action='delete', $option='gpci-options-redirect' );
- copy_to
Copia il valore di un'opzione a un'altra opzione, se il valore sorgente non è null. Questa azione ritornerà true se l'opzione di destinazione è stata cambiata, false altrimenti.
$args:
- to - stringa - id dell'opzione destinazione - default:''
- overwrite- booleano - se sovrascrivere la destinazione nel caso che già esista - default: false
Esempi
$option = OptionAction( $action='copy_to', $option='gpci-options-redirect', $args=[ 'to'=>'gpci_core_option_redirect', 'overwrite'=>false ] );
- move_to
Sposta il valore di un'opzione a un'altra opzione nuova o esistente, se il valore sorgente non è null. Esegue queste operazioni:
- copia l'opzione sorgente alla destinazione
- controlla se i valori sono identici
- se tutto ok elimina l'opzione sorgente
- se tutto ok ritorna true
$args:
- to - stringa - id dell'opzione destinazione - default:''
- overwrite- booleano - se sovrascrivere la destinazione nel caso che già esista - default:false
Esempi
$option = OptionAction( $action='move_to', $option='gpci-options-redirect', $args=[ 'to'=>'gpci_core_option_redirect' ] );
AiAction
Questa funzione esegue un'azione inerente un'AI. La connessione al server AI è eseguita tramite la funzione php RemoteRequest in cui il parametro return (ossia il contenuto della risposta), se non specificato, sarà automaticamente impostato sull'effettiva utilità della risposta. Per ora le ai supportate sono:
- OpenAI
Parametri
- action - stringa - azione che verrà eseguita dalla funzione - default:''
- ai- stringa/array associativo - informazioni sul provider e api key. Se stringa inserire solo il provider, l'api key sarà cercata nel database del sito (deve essere stata configurata nelle impostazioni dei connettori). Se array associativo compilare le chiavi provider e api_key, se non fornita un'api_key sarà utilizzata quella eventualmente configurata nei connettori - default:''
- args - array associativo - argomenti richiesti dall'azione. Sono perlopiù preconfigurati ma alcune azioni richiedono id o altre informazioni - default:[]
Return
In base all'azione, false in caso di parametri errati o mancanti. Se non utilizzsasaasasas
Azioni/args
- get_models
Ottiene i modelli utilizzabili. Se non specificato il return sarà un array di stringhe contenente i modelli.
$args: nessuno.
Esempi
//utilizzo base con pagina connettori configurata
$response = AiAction( $action='get_models', $ai='OpenAI' );
//stessa cosa di
$response = AiAction( $action='get_models', $ai=[ 'provider'=>'OpenAI' ] );
//utilizzo base ma senza la configurazione dei connettori oppure utilizzando un'altra api key
$response = AiAction( $action='get_models', $ai=[ 'provider'=>'OpenAI', 'api_key'=>'stringa_api_key' ] );
- new_conversation
Crea una nuova conversazione. Ritorna l'id della conversazione.
$args: nessuno.
Esempi
//crea una conversazione vuota
$response = AiAction( $action='new_conversation', $ai='OpenAI' );
- delete_conversation
Elimina una conversazione. Ritorna true o false in base alla riuscita.
$args:
- id- stringa - id della conversazione
Esempi
//uso base
$response = AiAction( $action='delete_conversation', $ai='OpenAI', $args=['id'=>'conv_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'] )
- new_response
Genera una risposta. Ritorna il testo di risposta.
$args:
- input - stringa/array - input da inviare - default:''
- conversation- stringa/null - eventuale id della conversazione a cui accodare la risposta- default:null
- model - stringa - modello da utilizzare - default: OpenAi: gpt-5.4-mini
- store - booleano - se memorizzare la risposta - default: false
Esempi
//utilizzo base
$response = AiAction( $action='new_response', $ai=[ 'provider'=>'OpenAI' ], $args=[ 'input'=>'Raccontami una barzelletta breve' ] );
//utilizzo con argomenti
$response = AiAction( $action='new_response', $ai=[ 'provider'=>'OpenAI' ], $args=[
'model' => 'gpt-4.1-mini',
'conversation' => 'conv_xxxxxxxxxxxxx',
'store' => true,
'input' => 'Raccontami una barzelletta breve',
] );
- get_response
Ottiene una singola risposta dal suo id.
$args:
- id- stringa - id della risposta - default:''
Esempi
//utilizzo base di inizializzazione conversazione
$response = AiAction( $action='get_response', $ai=[ 'provider'=>'OpenAI', 'api_key'=>'stringa_api_key' ], $args=[ 'id'=>'id_risposta' ] );
- get_conversation
Ottiene i meta dati di una conversazione dal suo id. Ritorna il body della risposta.
$args:
- id- stringa - id della conversazione - default:''
Esempi
//utilizzo base
$response = AiAction( $action='get_conversation', $ai=[ 'provider'=>'OpenAI' ], $args=[ 'id'=>'id_conversazione' ] );
- get_conversation_items
Ottiene i messaggi in una conversazione dal suo id. Ritorna il body della risposta.
$args:
- id- stringa - id della conversazione - default:''
Esempi
//utilizzo base
$response = AiAction( $action='get_conversation_items', $ai=[ 'provider'=>'OpenAI' ], $args=[ 'id'=>'id_conversazione' ] );
- create_vector_stores
Crea un vector store sul servizio scelto.
$args: saranno configurati automaticamente.
Esempi
//crea un nuovo vector store
$response = AiAction( $action='create_vector_store', $ai=[ 'provider'=>'OpenAI', 'api_key'=>'stringa_api_key' ], $args=[] );
- create_vector_store
Crea un vector store sul servizio scelto.
$args: saranno configurati automaticamente.
Esempi
//crea un nuovo vector store
$response = AiAction( $action='create_vector_store', $ai=[ 'provider'=>'OpenAI', 'api_key'=>'stringa_api_key' ], $args=[] );
- get_vector_stores
Ottiene tutti i vector stores sul servizio scelto.
$args: saranno configurati automaticamente.
Esempi
//crea un nuovo vector store
$response = AiAction( $action='get_vector_stores', $ai=[ 'provider'=>'OpenAI', 'api_key'=>'stringa_api_key' ], $args=[] );
- delete_vector_store
Elimina uno o più vector stores sul servizio scelto.
$args:
- id- stringa/array di stringhe - id del vector store da eliminare, se array saranno cancellati tutti gli id - default:''
Esempi
//elimina un vector store
$response = AiAction( $action='delete_vector_store', $ai=[ 'provider'=>'OpenAI', 'api_key'=>'stringa_api_key' ], $args=[ 'id'=>'vs_69f0616557308191aa3xxxxxxxxx' ] );
//elimina vector stores multipli
$response = AiAction( $action='delete_vector_store', $ai=[ 'provider'=>'OpenAI', 'api_key'=>'stringa_api_key' ], $args=[ 'id'=>[ 'vs_11111111111111111111', 'vs_22222222222222222222' ] ] );
