<

Php

Ultima modifica: 11 Agosto 2026

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):

CostanteFormatoDefinita inDescrizione
gpci\ABSPATHstringa/php/constants/functions.phppercorso alla root dell'installazione, copia esatta della costante ABSPATH
gpci\privatePhpAllowedbooleano/php/constants/functions.phppermesso ai files php che richiedono la costante (per ora solo ajax-public)
gpci\RootRelativeUrlstringa/php/constants/functions.phpUri della root di installazione
gpci\themeChildDirstringa/php/constants/functions.phppercorso alla directory del tema child
gpci\themeChildTempDirstringa/php/constants/functions.phppercorso alla directory dei files temporanei nel tema child
gpci\themeChildLogsDirstringa/php/constants/functions.phppercorso alla directory dei logs nel tema child
gpci\homeUrlstringa/php/constants/functions.phpurl della pagina iniziale del sito senza lo slash finale
gpci\homeUrlSlashstringa/php/constants/functions.phpurl della pagina iniziale del sito con lo slash finale
gpci\currentUrlQuerystringa/php/constants/functions.phpeventuale query string della pagina corrente
gpci\QueryStringsArrayPostnumero intero/php/constants/functions.phpvalore della query string post nel backend, ossia l'id del post nel backend, altrimenti sarà 0
gpci\isAdminbooleano/php/constants/functions.phpdefinisce se la schermata/richiesta corrente è di amministrazione
gpci\isDoingAjaxbooleano/php/constants/functions.phpdefinisce se la richiesta corrente è una richiesta ajax
gpci\isDoingCronbooleano/php/constants/functions.phpdefinisce se la richiesta corrente è una richiesta cron
gpci\isDoingRestbooleano/php/constants/functions.phpdefinisce se la richiesta corrente è una richiesta rest
gpci\isGutenbergBackendbooleano/php/constants/functions.phpdefinisce se la schermata/richiesta corrente è un backend gutenberg
gpci\isGutenbergBackendPostbooleano/php/constants/functions.phpdefinisce se la schermata/richiesta corrente è un backend gutenberg relativa a un post
gpci\isGutenbergBackendSiteEditorbooleano/php/constants/functions.phpdefinisce se la schermata/richiesta corrente è un backend gutenberg relativa al site editor
gpci\isFrontendbooleano/php/constants/functions.phpdefinisce se la schermata/richiesta corrente è nel frontend del sito
gpci\postTypesNotUsersarray di stringhe/php/constants/functions.phplista di dei post types interni di wordpress e metabox
gpci\postTypesarray di stringhe/php/constants/functions.phplista di tutti i post types, compresi quelli interni di wordpress e metabox, ottenuti dalla funzione get_post_types
gpci\postTypesNamesarray associativo/php/constants/functions.phpcome gpci\postTypes ma in formato associativo per essere utilizzati nelle metabox
gpci\postTypesUsersarray di stringhe/php/constants/functions.phppost types destinati agli utenti, quindi la differenza tra gpci\postTypes e gpci\postTypesNotUsers
gpci\postTypesUsersNamesarray associativo/php/constants/functions.phpcome gpci\postTypesUsersNames ma in formato associativo per essere utilizzati nelle metabox
gpci\postTypesUsersNoAttachmentarray di stringhe/php/constants/functions.phpcome gpci\postTypesUsers ma senza gli attachment
gpci\postTypesUsersNoAttachmentNamesarray associativo/php/constants/functions.phpcome gpci\postTypesUsersNoAttachment ma in formato associativo per essere utilizzati nelle metabox
gpci\postTypesViewablearray di stringhe/php/constants/functions.phplista di post types visibili pubblicamente, valutati dalla funzione is_post_type_viewable
gpci\postTypesViewableNamesarray associativo/php/constants/functions.phpcome gpci\postTypesViewable ma in formato associativo per essere utilizzati nelle metabox
gpci\postTypesViewableNoAttachmentarray di stringhe/php/constants/functions.phpcome gpci\postTypesViewable ma senza gli attachment
gpci\postTypesViewableNoAttachmentNamesarray associativo/php/constants/functions.phpcome gpci\postTypesViewableNoAttachment ma in formato associativo per essere utilizzati nelle metabox
gpci\postTypeArchivesarray associativo/php/constants/functions.phparray di coppie slug/url archivio di ogni post type
gpci\CurrentPostTypestringa/php/constants/functions.phpdefinisce 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:

CostanteFormatoDescrizionePagina impostazioni
gpci\tweaks\included\run_wptexturize0/1Disabilita globalmente la funzione wptexturizeottimizzazioni e tweaks
gpci\tweaks\included\capital_p_dangit0/1Disabilita globalmente la funzione capital_p_dangitottimizzazioni e tweaks
gpci\tweaks\included\disable_gutenbergarray di stringheDisabilita gutenberg per i post types contenutiottimizzazioni e tweaks
gpci\tweaks\included\disable_xmlrpc0/1Impedisce l'accesso al file xmlrpc.phpottimizzazioni e tweaks
gpci\tweaks\included\disable_feeds0/1Disabilita tutti i feeds del sitoottimizzazioni e tweaks
gpci\tweaks\included\disable_sitemap0/1Disabilita tutte le sitemapottimizzazioni e tweaks
gpci\tweaks\included\disable_wpautop0/1Disabilita globalmente la funzione wpautopottimizzazioni e tweaks
gpci\tweaks\included\disable_wp_embed0/1Disabilita gli embeds automatici generati da wordpressottimizzazioni e tweaks
gpci\sitemap\included\disable_users0/1Disabilita le sitemap relative gli utentisitemap
gpci\sitemap\included\disable_taxonomies0/1Disabilita 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.

GlobaleFormatoDescrizione
$GLOBALS['gpci']['temp']qualsiasiglobale 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 associativicontenitore di globali di appoggio usa e getta organizzate per contesto
$GLOBALS['gpci']['temps']array di array associativicontenitore di globali di appoggio usa e getta organizzate per contesto, sostituirà i precedenti
$GLOBALS['gpci']['currentOrigin']stringaorigine corrente per la funzione ErrorMessage - RIMUOVERE COMPLETAMENTE
$GLOBALS['gpci']['shortcodes']array di array associativicontenitore di globali relative gli shortcodes
$GLOBALS['gpci']['shortcodes']['stored']array di array associativiutilizzata per la memorizzazione degli shortcodes
$GLOBALS['gpci']['foreach']array associativoutilizzata nella gestione dei foreach: contiene vari sotto array a cui verranno aggiunte le informazioni sui foreach della pagina.
$GLOBALS['gpci']['foreach']['keys'][$id]qualsiasiglobale indice utile nel controllo dei valori delle chiavi foreach: man mano che i foreach acquisiscono chiavi popolano anche questa variabile.
$GLOBALS['gpci']['foreach']['values'][$id]qualsiasiglobale indice utile nel controllo dei valori del foreach: man mano che i foreach acquisiscono valori popolano anche questa variabile.
$GLOBALS['gpci']['foreach'][$id]['count']numero interoindica il numero di elementi totali in un certo foreach
$GLOBALS['gpci']['foreach'][$id]['pagination']numero interoindica un'eventuale numero di elementi per pagina in un certo foreach
$GLOBALS['gpci']['foreach'][$id]['key']varichiave corrente nel ciclo di un certo foreach
$GLOBALS['gpci']['foreach'][$id]['index']numero interonumero dell'elemento corrente nel ciclo di un certo foreach (base 1)
$GLOBALS['gpci']['foreach'][$id]['value']varivalore corrente nel ciclo di un certo foreach
$GLOBALS['custom']array variutilizzata nello shortcode globals e nel blocco gutenberg globals, è definita liberamente dagli amministratori per qualsiasi loro utilizzo.
$GLOBALS['gpci']['shortcuts']['settings_page']array di stringheopzionale, se definita genera la lista dei collegamenti nella pagina impostazioni scorciatoie
$GLOBALS['gpci']['shortcuts']['admin_bar_menu']array di array associativiopzionale, se definita genera la lista dei collegamenti nella barra admin superiore
$GLOBALS['gpci']['outputbuffering']array di array associativicontiene il nome della funzione con relativa priorità che modificherà l'output buffering
$GLOBALS['gpci']['AddAttributesToTags']array di array associativiaggiunge attributi automaticamente ai tag specificati utilizzando l'output buffering (per ora solo html e body). Esempio:
$GLOBALS['gpci']['AddAttributesToTags'][] = [
'tag'=>'body',
'name'=>'nome',
'value'=>'valore'
];

E' sufficiente definire la globale, non è necessario chiamare alcuna funzione.
$GLOBALS['gpci']['btn-templates']array di array misticontiene tutte le definizioni dei templates a pulsanti da utilizzare nei vari campi del backend
$GLOBALS['gpci']['maintenanceMode']booleanodefinisce se attivare la modalità manutenzione soft
$GLOBALS['gpci']['whitelist']array di arraycontenitore delle globali inerenti
$GLOBALS['gpci']['whitelist']['blocks']array di stringheimposta i nomi dei blocchi in whitelist
$GLOBALS['gpci']['whitelist']['functions']array di stringheimposta i nomi delle funzioni in whitelist
$GLOBALS['gpci']['whitelist']['userdata']booleanopermette a tutti di visualizzare i dati utente dopo la conversione dinamica
$GLOBALS['gpci']['dynamic_conversion']array di arraycontenitore delle globali inerenti la conversione dinamica
$GLOBALS['gpci']['dynamic_conversion']['options']array di arraycontenitore dei tipi di opzioni della conversione dinamica
$GLOBALS['gpci']['dynamic_conversion']['options']['default']array associativodefinisce le opzioni predefinite della conversione dinamica
$GLOBALS['gpci']['dynamic_conversion']['options']['custom']array associativodefinisce le opzioni personalizzate della conversione dinamica
$GLOBALS['gpci']['dynamic_conversion']['comparators']array di arraycontenitore dei comparatori per valutare le condizioni
$GLOBALS['gpci']['dynamic_conversion']['comparators']['default']array associativodefinisce i comparatori predefiniti
$GLOBALS['gpci']['dynamic_conversion']['comparators']['custom']array associativodefinisce i comparatori personalizzati
$GLOBALS['gpci']['headTags']array di arraycontenitore di sotto array
$GLOBALS['gpci']['headTags']['MetainfoBlockIsRendering']booleanoDA FARE
$GLOBALS['gpci']['headTags']['style']array di stringhecontiene 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 mistose 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']stringacontiene 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']booleanoabilita la modalità di visualizzazione errori
$GLOBALS['gpci']['render']array associativocontenitore 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 interonumero blocco gutenberg della pagina corrente correntemente processato tramite hook render_block
$GLOBALS['gpci']['render']['callbacks']array associativocontenitore dei callbacks aggiunti dai filtri contenuto con parametri utili e conteggio incrementale come chiave
$GLOBALS['gpci']['render']['callbacks_count']numero interoconteggio incrementale dei callbacks aggiunti dai filtri contenuto nella pagina corrente
$GLOBALS['gpci']['render']['block_filtered_id']stringaattributo ClientId del blocco gutenberg da cui parte il filtro contenuto
$GLOBALS['gpci']['render']['current_hook']stringahook corrente selezionato nel filtro contenuto
$GLOBALS['gpci']['render']['block_content']stringamemorizza temporaneamente il contenuto html del blocco corrente
$GLOBALS['gpci']['render']['block']arraymemorizza temporaneamente la configurazione del blocco corrente
$GLOBALS['gpci']['render']['instance']WP_Block/nullmemorizza temporaneamente le configurazioni avanzate del blocco corrente
$GLOBALS['gpci']['render']['pre_render']stringa/nullmemorizza temporaneamente il pre_render del blocco corrente
$GLOBALS['gpci']['render']['parsed_block']array associativomemorizza temporaneamente la configurazione del blocco corrente
$GLOBALS['gpci']['render']['parent_block']WP_Block/nullmemorizza temporaneamente la configurazione del blocco genitore del corrente
$GLOBALS['gpci']['render']['source_block']arraymemorizza temporaneamente la configurazione non modificata del blocco corrente
$GLOBALS['gpci']['render']['page']numero intero/0memorizza temporaneamente la pagina corrente del blocco query corrente
$GLOBALS['gpci']['render']['commentId']stringa/0memorizza temporaneamente l'id del commento in una query. Il formato anche se zero è sempre una stringa
$GLOBALS['gpci']['render']['postId']numero intero/0memorizza temporaneamente l'id del post in una query
$GLOBALS['gpci']['render']['postType']stringamemorizza temporaneamente il post type in una query
$GLOBALS['gpci']['ajax']array associativocontenitore delle globali inerenti la configurazione ajax
$GLOBALS['gpci']['ajax']['current_args']array associativocontiene gli argomenti filtrati utilizzabili inerenti la chiamata ajax corrente
$GLOBALS['gpci']['ajax']['current_query_response']array di stringhe/arrayscontiene le risposte della query corrente ajax tramite pagina impostazioni. Solo ad uso interno.
$GLOBALS['gpci']['queries']array associativocontenitore delle globali inerenti le informazioni sulle queries della pagina corrente (per ora solo sulla corrente)
$GLOBALS['gpci']['queries']['current']oggetto WP_Queryoggetto contenente le informazioni sulla query corrente
$GLOBALS['gpci']['query']oggetto WP_Querycopia e scorciatoia alla globale $GLOBALS['gpci']['queries']['current']
$GLOBALS['gpci']['functions']array di arraysContenitore delle globali inerenti le funzioni php che necessitano di id personalizzati o parametri a lunga durata
$GLOBALS['gpci']['meta_box_registry']array di arraysregistro di tutti i campi personalizzati ottenuto con:
rwmb_get_registry( 'meta_box' )->all()
$GLOBALS['gpci']['meta_box_fields']array di arraysregistro dei campi personalizzati divisi per tipo e con aggiunta di parametri personalizzati
$GLOBALS['gpci']['meta_box_fields']['gpci']array di arraysregistro dei campi personalizzati generati dal framework (vuoto per ora)
$GLOBALS['gpci']['meta_box_fields']['custom']array di arraysregistro dei campi personalizzati generati dall'amministratore del sito
$GLOBALS['gpci']['databases']array associativocontenitore di eventuali connessioni a databases esterni
$GLOBALS['gpci']['database_active']stringaid del database attivo correntemente, default per il database predefinito
$GLOBALS['gpci']['modules']array di arrayscontenitore delle globali inerenti i moduli
$GLOBALS['gpci']['backend']array associativocontenitore 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

  1. $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:

  1. configurazione normale (config)
  2. se il punto sopra risulta null (globale non impostata o condizioni non rispettate) prova ad ottenere la configurazione default (config_default)
  3. se anche il punto sopra risulta null il valore sarà considerato mancante (null)

Parametri

  1. $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: ''
  2. $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

  1. $config - stringa rappresentante il percorso di configurazione - default: ''
  2. $value - qualsiasi - valore da assegnare alla configurazione, se null la configurazione sarà eliminata - default:null
  3. $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

  1. $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

  1. $data - variabile risultato
    Variabile che rappresenta il risultato di una funzione
  2. $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

  1. $action - stringa
    azione da eseguire, al momento l'unico valore possibile è writesinglefile
  2. $name - stringa - default:''
    nome del file da scrivere
  3. $ext - stringa - default:''
    estensione del file da scrivere
  4. $data - stringa - default:''
    dati da inserire nel file
  5. $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:

  1. da un transient, mediante la funzione get_transient
  2. 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

  1. $action - stringa
    azione da eseguire tra le seguenti:
    • read - ottiene il contenuto
    • write - scrive il contenuto
    • delete - cancella il contenuto
  2. $name - stringa
    nome del transient e del file temporaneo, deve essere univoco nel sito
  3. $data - stringa - default: false
    contenuto da scrivere, se action è read, non verrà utilizzato. Il contenuto verrà scritto solo se diverso da quello corrente
  4. $ext - stringa - default: txt
    estensione del file temporaneo
  5. $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

  1. $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

  1. $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:

  1. se pagina blog personalizzata: titolo della pagina
  2. titolo post/pagina se trovato un id tramite la funzione url_to_postid
  3. nome del post type se l'url è un archivio
  4. frammento url invariato, calcolato dalla funzione php basename

Esempi

UrlToTitle( $url='https://www.gigitopcinformatica.it/docs/gpci-framework/' );

Risultato: Documentazione Gpci framework

Risorse collegate:


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

  1. $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:


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

  1. $context - stringa - contesto da controllare (vedere valori qui sopra) - default:''
  2. $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

  1. $context - stringa - contesto da controllare (vedere valori qui sopra). Se utilizzato * sarà ritornato un array contenente tutti i contesti rilevati - default:''
  2. $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

  1. $origin - stringa - origine del messaggio - default: stringa vuota
  2. $message - stringa o array - messaggio o messaggi multipli
  3. $print - booleano - se stampare il messaggio a schermo con un echo/print_r oppure ritornare il messaggio - default:true
  4. $HtmlWrapper - booleano - genera anche l'html di errore attorno al messaggio - default:true
  5. $debug_backtrace - booleano - se aggiungere l'albero di provenienza al messaggio - default:true
  6. $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:

Messaggio di errore

BACKTRACE>>eval <<{closure:/home2/pvgigito/public_html/wp-content/themes/gpci/php/globals/dynamic-conversion.php:542} <<GpciContentTypeConversion <<RenderBlockReplacements <<{closure:/home2/pvgigito/public_html/wp-content/themes/gpci/php/hook/render_block.php:23} <<

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:

Funzione EsempioErrorMessage: Messaggio di errore 1

Funzione EsempioErrorMessage: Messaggio di errore 2

Funzione EsempioErrorMessage: BACKTRACE>>EsempioErrorMessage <<eval <<{closure:/home2/pvgigito/public_html/wp-content/themes/gpci/php/globals/dynamic-conversion.php:542} <<GpciContentTypeConversion <<RenderBlockReplacements <<{closure:/home2/pvgigito/public_html/wp-content/themes/gpci/php/hook/render_block.php:23} <<

Risorse collegate:


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

  1. $action - stringa - azione da eseguire
  2. $shortcodes - array o stringa - array di shortcodes tags oppure stringa 'all' (l'azione sarà applicata a tutti gli shortcodes) - default:[]
  3. $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
  4. $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 $GLOBALS['gpci']['shortcodes']['stored'] poi li rimuove dalla globale originale di wordpress. Non ritorna nulla. Serve a disabilitare il rendering degli shortcodes senza eliminarli dal contenuto. Esempio:

//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 $GLOBALS['gpci']['shortcodes']['stored'] 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:

//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 $GLOBALS['gpci']['shortcodes']['stored'], 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:

//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 $GLOBALS['gpci']['shortcodes']['stored'] questa è la scelta ideale. Esempio:

//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 $GLOBALS['gpci']['shortcodes']['stored'] esattamente come sopra. Non ritorna nulla. Serve a disabilitare il rendering degli shortcodes senza possibilità di recuperarli lasciandoli nel contenuto. Esempio:

//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:


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

  1. $action - stringa - azione da eseguire
  2. $excludeCurrentBlock - booleano - se escludere il blocco corrente dall'azione - default:false
  3. $updateInnerblocks - booleano - se aggiornare gli innerblocks ricorsivamente (quindi tutti i blocchi interni a qualsiasi livello) - default:false
  4. $name - stringa - eventuale nome dell'attributo da aggiornare - default:''
  5. $value - stringa - eventuale valore da utilizzare in base all'azione - default:''
  6. $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

  1. $action - stringa - azione da eseguire
  2. $html - stringa - stringa html
  3. $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 &nbsp;) 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:

TagModifica
h1, h2, h3, h4, h5, h6, paggiunto 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:


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

  1. $action - stringa - azione da eseguire
  2. $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:

OrdineFormatoFormato phpFormato HTML5
(si usa solo ISO 8601)
Valore di ritorno
1TimestampNumero interoNumero interotimestamp
2MySQL
Esempio: 2025-12-31
Y-m-dYYYY-MM-DDmysql
3se 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
4se 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 linguastringa 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:

  1. timestamp - se l'orario è un numero intero o una stringa numerica si suppone che sia un timestamp
  2. mysql - se l'orario è in formato H:i:s
  3. default - se l'orario è nello stesso formato default di wordpress, cioè quello configurato nella pagina di impostazioni generali
  4. 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:

OrdineFormatoFormato phpFormato HTML5
(si usa solo ISO 8601)
Valore di ritorno
1TimestampNumero interoNumero interotimestamp
2MySQL
Esempio: 2025-12-31 10:00:00
Y-m-d H:i:sYYYY-MM-DD HH:MM:SSmysql
3ISO 8601
Esempio: 2025-12-31T10:00:00
Y-m-d\TH:i:sYYYY-MM-DDTHH:MM:SSiso8601
4ISO 8601 con offset
Esempio: 2025-12-31T10:00:00+01:00
Y-m-d\TH:i:sPYYYY-MM-DDTHH:MM:SS±HH:MMiso8601_offset
5ISO 8601 con UTC
Esempio: 2025-12-31T10:00:00Z
Y-m-d\TH:i:s\ZYYYY-MM-DDTHH:MM:SSZiso8601_utc
6se 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
7se 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 linguastringa 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 );
- email

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

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

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
  • email
  • 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:

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

  1. action - stringa - azione che verrà eseguita dalla funzione
  2. 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'
  3. 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:

  1. proverà direttamente a decodificare la stringa come json valido (con parentesi graffe e proprietà/valori con virgolette ecc...)
  2. proverà ad aggiungere, se non presenti le parentesi graffe agli estremi, poi riproverà a decodificare la stringa come prima
  3. 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:

  1. se true o TRUE il valore diventerà un booleano true
  2. se false o FALSE il valore diventerà un booleano false
  3. se null o NULL il valore diventerà un valore nullo (null)
  4. 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:

  1. se array sarà sottoposto alla conversione ConvertArrayToAuto
  2. se stringa sarà sottoposto alla conversione ConvertStringToAuto
  3. 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:

  1. se stringa: sarà convertita ad array di 1 elemento, se specificato il separatore sarà trattata con explode
  2. se numero: sarà inserito in un array da 1 elemento
  3. se oggetto: sarà convertito ad array
  4. 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:

  1. document_root - punta alla root del server ottenuta tramite la globale php $_SERVER['DOCUMENT_ROOT']
  2. site_root - punta alla root del sito ottenuta tramite la costante php ABSPATH
  3. wp_upload - punta alla cartella uploads di wordpress root del sito ottenuta dalla funzione php wp_upload_dir
  4. 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):

  1. se $content è null ritornerà null
  2. 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' ] )
  3. 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' ] )
  4. 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:

  1. immagine di anteprima del post corrente con slug dimensione specificato
  2. immagine del logo con slug dimensione specificato
  3. 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:

  1. tmp_file - se file temporaneo caricato da un form o gestito da un hook wordpress (quando applicabile)
  2. http/https/ftp/smb/ecc.. - in base al valore
  3. path - se potenziale percorso server
  4. unc - se stringa che rappresenta una condivisione locale windows
  5. 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:

$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/informazioneDescrizioneEsempio
dirnamepercorso della cartella che contiene il file/home2/utente/public_html/blog
basenamenome file con estensioneindex.php
filenamenome file senza estensioneindex
extensionestensione filephp
mimemime filetext/x-php
typetipo file ricavato dal mimetext
subtypesottotipo file ricavato dal mimex-php
sizegrandezza file in byte405
widthlarghezza file in px (0 se non possibile)0
heightaltezza file in px (0 se non possibile)0
contentcontenuto filecontenuto testuale o contenuto binario
date_modifieddata di ultima modifica del file in formato timestamp1580970791
pathpercorso completo del file/home2/utente/public_html/blog/index.php
contentcontenuto 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:

  1. elimina le grandezze media correnti
  2. 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
  3. aggiorna timestamp del file collegato
  4. ricrea le grandezze media
  5. aggiorna i metadati e li sincronizza con la globale php $GLOBALS['gpci']['modules']['media']['actions']['update']
  6. aggiorna il mime
  7. aggiorna il guid
  8. se necessario rinomina il file originale jpeg/png e aggiorna il campo personalizzato che contiene il nome di fallback
  9. 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/informazioneDescrizioneEsempio
dirnamepercorso della cartella che contiene la cartella bersaglio/home2/utente/public_html/blog
basenamenome cartellawp-content
filenamecome soprawp-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:

  1. se le condizioni non sono in formato array ma booleano ritornerà il valore
  2. se l'array delle condizioni è vuoto si suppone che non ci sia una condizione da controllare, quindi ritornerà true
  3. 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
  4. se l'array delle condizioni è una condizione singola il cui formato è riconosciuto ritornerà il risultato del controllo
  5. 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

  1. $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:

  1. copia l'opzione sorgente alla destinazione
  2. controlla se i valori sono identici
  3. se tutto ok elimina l'opzione sorgente
  4. 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

  1. action - stringa - azione che verrà eseguita dalla funzione - default:''
  2. 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:''
  3. 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' ] ] );