Le funzioni descritte in questa pagina sono usate internamente dal framework e soggette a probabili e drastici cambiamenti. Sono da considerarsi come documentazione privata oppure per capire come funziona la base del framework.
Callbacks-blocks.php
- Posizione: /php/callbacks/callbacks-blocks.php
Insieme di funzioni relative ai blocchi gutenberg Gpci.
GpciRenderBlockHead
Callback non diretto del blocco head: assegna le variabili globali che verranno generate nella head.
Parametri
Sono gli stessi dell'hook render_block:
- block_content
- block
- instance
Return
Null, in quanto il contenuto del blocco non deve essere generato.
Usata in
- /php/hooks/render_block/switch_block.php
GpciClassicMenuDefaultRender
Funzione predefinita per generare il blocco menu classico.
Parametri
Sono gli stessi dell'hook render_block:
- block_attributes
- content
Return
Stringa html finale che rappresenta il menu.
Usata in
- /blocks/classicmenu.php
GpciClassicMenuDefaultBuild
Funzione ricorsiva che costruisce i submenu e i tag li nel blocco menu classico (è chiamata dalla funzione precedente).
Parametri
Sono gli stessi dell'hook render_block:
- block_attributes
- items
- parent_id
Return
Stringa html che rappresenta il submenu e i tag li.
Usata in
- /php/callbacks/callbacks-blocks.php
Callbacks-internal.php
GpciGetCurrentPostId (VERIFICARE)
Ottiene il post id corrente in vari contesti. Si basa sulla funzione di wordrpress get_page_by_path.
- prova a ottenere dalla funzione interna get_the_ID
- se richiesta ajax e post id in
$_REQUEST['post_id']ritorna quello - se schermata admin e post id in
$_GET['post']ritorna quello
Parametri
Nessuno.
Return
Post id del post corrente oppure 0.
Documentazione rilevante
- funzione php CheckCurrentContext
- costanti php di contesto (gpci/isAdmin, gpci/isFrontend, ecc...)
GpciCacheData
Gestisce i gruppi di caches predefiniti dal framework (per ora post types e tags).
Parametri
- $action - stringa - valori possibili:
delete - elimina tutte le caches specificate
check - controlla se le caches specificate sono impostate nel parametro $caches, altrimenti le controlla tutte
write - scrive le caches specificate - $caches - stringa o array di stringhe - default: postTypes, tags -
se non specificato: applica l'azione a tutte le caches.
se stringa: applica l'azione alla cache specificata
se array di stringhe: applica l'azione alla/le caches specificate
Valori possibili
Se specificata la cache i valori possibili sono:
- postTypes - applica l'azione alle caches relative i post types
- tags - applica l'azione alle caches relative i tags
Return
Nulla.
Esempi
//svuota tutte le caches predefinite
GpciCacheData( $action='delete' );
//scrive tutte le caches predefinite
GpciCacheData( $action='write' );
//controlla se esistono tutte le caches predefinite
GpciCacheData( $action='check' );
//controlla se esistono le caches relative i post types
GpciCacheData( $action='check', $caches='postTypes' );
//oppure
GpciCacheData( $action='check', $caches=['postTypes'] );
Risorse collegate:
- funzione CacheData
- costanti php relative i post types
- costanti php relative i tags
GpciUpdateThemeJson
Aggiorna il file theme.json (se modificato) del tema child dai controlli all'interno della sezione theme.json del customizer.
Parametri
Nessuno.
Return
Nulla.
Usata in
- hook customize_save_after
GpciUpdateStyleCss
Aggiorna il file style.css (se modificato) del tema child unendo:
- headers personalizzate del tema child inserite nel file headers-style.css
- stili globali gutenberg processati e modificati ottenuti dalle funzioni wp_get_global_styles e wp_get_global_stylesheet
- file customizer-base.css
- file customizer-custom.css
Parametri
Nessuno.
Return
Nulla.
Usata in
- hook customize_save_after
- hook post_updated
GpciCheckBlockNames
Controlla i nomi dei blocchi gutenberg passati allo shortcode render_blocks.
Parametri
- $blocks - array ottenuto da parse_blocks
Return
True se tutti i blocchi sono permessi, false se almeno un blocco non è autorizzato.
Risorse collegate:
- globale php
$GLOBALS['gpci']['whitelist']['blocks']
GpciRecursiveActionFromFolder
(da rivedere InitializeTemp)
Esegue un'azione ricorsiva dai file inseriti in una cartella (se sono dell'estensione specificata), comprendendo anche le sottocartelle. Se il parametro ActionOnFile è una funzione inesistente verrà generato in console un messaggio di errore.
Parametri
- $folder_path - percorso di una cartella senza slash finale
- $ActionOnFile - stringa - nome di un'azione o di funzione che verrà eseguita sui files interni a ogni cartella (che sono dell'estensione specificata). Le azioni sono:
- includephpfile
- addiconsfromfile
- wp_enqueue_script
- addpathtoarray (usare insieme a $GLOBALS['gpci']['temp']) - aggiunge i percorsi alla globale temporanea
- $ExtTarget - stringa - estensione bersaglio
- $InitializeTemp - booleano - default: false - settare a true se serve inizializzare la global temp
- $IsReturningString - booleano - default: false - settare a true se la funzione deve ritornare una stringa (probabilmente codice html)
- $AdditionalArgs - qualsiasi - default: [] - se servono parametri aggiuntivi specificare come chiavi/valori. parametri correnti:
deps, args, ver=>filemtime(la versione del file sarà calcolata a ogni caricamento pagina), include_once
Return
Se $IsReturningString true ritorna una stringa, altrimenti nulla.
Usata in
- /functions.php (azione includephpfile)
- /modules/icons/after_setup_theme.php (azione includephpfile)
- /modules/additions/rwmb_meta_boxes.php (azione addpathtoarray)
Esempi
dal file /functions.php:
if( file_exists( gpci\themeChildDir.'/private/php/auto-includes' ) ){
GpciRecursiveActionFromFolder( $folder_path=gpci\themeChildDir.'/private/php/auto-includes', $ActionOnFile='includephpfile', $ExtTarget='php' );
}
dal file /modules/icons/after_setup_theme.php:
if( file_exists( gpci\themeChildDir.'/private/icons' ) ){
$globalSvgIcons .= GpciRecursiveActionFromFolder( $folder_path=gpci\themeChildDir.'/private/icons', $ActionOnFile='addiconsfromfile', $ExtTarget='html', $InitializeTemp=true, $IsReturningString=true );
}
esempi dal risultato identico con funzione:
//Include files php
function GpciIncludePhpFile( $file_path ){ include $file_path; }
GpciRecursiveActionFromFolder( $folder_path=gpci\themeChildDir.'/private/php/auto-includes', $ActionOnFile='GpciIncludePhpFile', $ExtTarget='php' );
//Crea una stringa di icone
function GpciAddIconsFromFile( $file_path ){ $GLOBALS['gpci']['temp'] .= file_get_contents( $file_path ); }
$globalSvgIcons .= GpciRecursiveActionFromFolder( $folder_path=gpci\themeChildDir.'/private/icons', $ActionOnFile='GpciAddIconsFromFile', $ExtTarget='html', $InitializeTemp=true, $IsReturningString=true );
esempio di accodamento scripts con versione come il tema padre:
GpciRecursiveActionFromFolder( $folder_path=gpci\themeDir.'/js/enqueue_block_editor_assets/hooks/editor.BlockEdit/parts', $ActionOnFile='wp_enqueue_script', $ExtTarget='js', $InitializeTemp=false, $IsReturningString=false, $AdditionalArgs=[
'deps' => 'gpci-editor-blockedit',
'args' => [ 'strategy'=>'defer', 'in_footer'=>true ]
] );
esempio di inclusione modulodi stampa in una pagina singola, ma disabilitato nel resto del sito:
define( 'gpci\modules\included\print\print-posttypes', [ gpci\CurrentPostType ] );
define( 'gpci\modules\included\print\single-print', 1 );
GpciRecursiveActionFromFolder( $folder_path=gpci\modulesDir.'print', $action='includephpfile', $ExtTarget='php', $InitializeTemp=false, $IsReturningString=false, $AdditionalArgs=[ 'include_once'=>true ] );
GpciDefineIncludedConst
Calcola e definisce costanti included dalle eventuali costanti default/forced/opzione database e, se pagina impostazioni specificata, aggiorna l'opzione corrispondente.
Parametri
- $option - array
id dell'opzione che contiene la key. Il nome della key è sempre uguale al nome della costante - $ComponentTypeConst - array - default: []
array di chiavi->valori che corrispondono al nome costante/chiave opzione->tipo di componente - $UpdatePage - stringa - default: ''
query string della pagina a cui aggiornare il database
Return
Nulla.
Usata in
- /php/inclusions.php
Note
Chiamare 1 volta per ogni pagina impostazioni utile.
Esempi
GpciDefineIncludedConst( $option='gpci-additional-components', $ComponentTypeConst=[
//Plugins
'mb-admin-columns' => 'plugins',
'mb-blocks' => 'plugins',
'mb-custom-table' => 'plugins',
...................................
//Modules
'additions' => 'modules',
'cache' => 'modules',
'icons' => 'modules',
....................................
//Components
'sitemap' => 'components'
], $UpdatePage='page=gpci-additional-components' );
GpciDefineIncludedConst( $option='gpci-options-tweaks', $ComponentTypeConst=[
'run_wptexturize' => 'tweaks',
'capital_p_dangit' => 'tweaks'
], $UpdatePage='page=gpci-options-tweaks' );
GpciModuleComponentIncludedValue
Come funzione precedente ma specifica per i singoli componenti dei moduli, utilizzata nella pagina impostazioni componenti aggiuntivi, forse da unire alla precedente.
Parametri
- $module - stringa
modulo all'interno del qualwe si trova il campo (ossia il nome cartella che lo contiene che è uguale al suo id) - $constant - stringa
finale della costante che include un campo del modulo, ossia l'id del campo - $default - numero - default: 0
valore da usare se non è specificata nessuna costante o opzione nel database
Return
Non ritorna nulla, definisce solo la costante included spedificata.
Usata in
- hooks rwmb_meta_boxes all'interno dei moduli
Esempi
GpciModuleComponentIncludedValue( $module='additions', $constant='additions-posttypes', $default=[] );
GpciModuleComponentIncludedValue( $module='additions', $constant='single-css', $default=1 );
GpciReturnForcedClassFromConst
Ritorna come stringa la classe forced oppure not-forced in base all'esistenza della sua variante rispetto a una costante. Utilizzata in tutti i singoli componenti/plugins/moduli.
Parametri
- $ComponentType - stringa
tipo di componente della costante: modules, plugins, components - $constant - stringa
seconda parte finale del nome della costante, come additions o permissions - $SubConstant - stringa - default: false
se stringa verrà preso inconsiderazione come ultima parte della costante, esesmpio: single-css
Return
Stringa: forced oppure not-forced
Usata in
- vari hook rwmb_meta_boxes, nella definizione del campo singolo
Esempi
'class'=>'primary-switch '.GpciReturnForcedClassFromConst( $ComponentType='components', $constant='sitemap' )
oppure
'class'=>GpciReturnForcedClassFromConst( $ComponentType='modules', $constant='additions', $SubConstant='single-css' )
GpciNoRenderOnDevice
Rimuove il blocco corrente dal frontend tramite javascript se il dispositivo è smartphone, tablet o desktop in base al controllo dedicato. Aggiunge uno script dedicato durante la gestione.
Parametri
- block_content - stringa
stringa html originale - ClientId - stringa
ClientId del blocco - NoRenderOnPhone - booleano
attributo corrispondente - NoRenderOnTablet - booleano
attributo corrispondente - NoRenderOnDesktop - booleano
attributo corrispondente
Return
Stringa html del blocco dopo la gestione.
Usata in
- /php/hooks/render_block.php
GpciAddAttributesToTags
Aggiunge attributi personalizzati ai tag contenuti nella globale $GLOBALS['gpci']['AddAttributesToTags'] (se non vuota) tramite l'output buffering (per ora solo html e body). Spinta nell'output buffering dall'hook template_redirect. Vedere la descrizione della globale per il formato.
Parametri
- buffer - stringa
stringa buffer
Return
Buffer modificato oppure no.
Usata in
- /php/hooks/template_redirect.php
GpciApplyAttributesServerSide
Aggiunge al blocco corrente gli attributi impostati nel controllo dedicato tramite l'hook render_block.
Parametri
- AttributesDefinition - array
definizione attributi del blocco - block_content - stringa
stringa html del blocco
Return
Stringa html block_content eventualmente modificata dagli attributi.
Usata in
- /php/hooks/render_block.php
GpciStringToFieldId
Converte una stringa a un id valido per un campo personalizzato. Il formato diventa:
- solo lettere minuscole, numeri e underscores
- spazi e trattini medi vengono convertiti ad underscores
- altri caratteri speciali vengono rimossi
- underscores multipli e a inizio o fine stringa vengono rimossi
Parametri
- string - stringa
stringa da convertire
Return
Stringa modificata.
Usata in
- /modules/additions/rwmb_meta_boxes.php
GpciControlContentType
Definisce le opzioni contenute nel select del contenuto dinamico. Usato per passare le opzioni a metabox nel formato corretto.
Parametri
- $options - array di stringhe - default:tutti i valori della conversione dinamica escluso none - opzioni che saranno generate
- $ExtraOptions - array associativo - default:[] - opzioni aggiuntive che saranno accodate in foramto chiave/valore
Return
Array associativo con valore/label. Rimane da aggiungere l'helper.
Esempii
'fields' => [
[
'name' => 'Tipo di valore',
'id' => 'cond1type',
'type' => 'select',
'options' => GpciControlContentType( $options=[ 'string', 'GET' ] )
]
'fields' => [
[
'name' => 'Tipo di valore',
'id' => 'cond1type',
'type' => 'select',
'options' => GpciControlContentType( $options=[ 'string', 'GET' ], $ExtraOptions=[ 'search_columns'=>'Colonne' ] )
]
Risorse collegate:
- modulo permessi (file rwmb_meta_boxes-single)
GpciRenderingConditions
Processa le condizioni di rendering.
Parametri
- $RenderingConditionsPhpGroup - array di array/false - default:false - valore dell'attributo RenderingCondPhpGroup
- $RenderingCondPhpOperator - stringa - - default:'' - operatore logico
- $block_content - stringa/false - default:false - se stringa ritorna la stringa se le condizioni sono rispettate, null se le condizioni non sono rispettate, stringa di errore se ci sono errori di sintassi
- $ConditionsFromCustomFields - booleano - default:false - rimappa i valori usati internamente se arriva da un campo personalizzato
Return
Se $block_content ritorna la stringa/null/errore, altrimenti true o false.
Note
Se il parametro $RenderingCondPhpOperator non è specificato la funzione ritornerà false.
Esempi
Hook render_block
$block_content = GpciRenderingConditions( $RenderingConditionsPhpGroup, $RenderingCondPhpOperator, $block_content );
Hook pre_render_block
if( !GpciRenderingConditions( $RenderingConditionsPhpGroup, $RenderingCondPhpOperator ) ){ $pre_render = ''; };
Blocco condizionale
if( GpciRenderingConditions( $BlockCondition['attrs']['RenderingCondPhpGroup'] ?? false, $BlockCondition['attrs']['RenderingCondPhpOperator'] ?? 'and' ) ){}
Modulo permessi
if( !GpciRenderingConditions( $perm_single_vis_cond, $perm_single_operator, $block_content=false, $ConditionsFromCustomFields=true ) ){}
GpciConditionComparator
Compara la condizione singola, ritornando true o false - usata nelle comparazioni.
Parametri
- cond1Value - stringa - primo operando
- operator - stringa - operatore
- cond2Value - stringa - secondo operando
Return
True o false in base alla comparazione.
Esempi
$risultato = GpciConditionComparator( $value1, $comparator, $value2 );$RenderingConditionCond2Value ) );
array_push( $conditionsResults, GpciConditionComparator( $RenderingConditionCond1Value, $RenderingConditionComparator, $RenderingConditionCond2Value ) );
Risorse collegate:
GpciControlComparator
Definisce le opzioni contenute nel select dei comparatori. Usato per passare le opzioni a metabox nel formato corretto.
Parametri
Nessuno.
Return
Array associativo di opzioni come chiave=>valore.
Esempi
$options = GpciControlComparator();
Risorse collegate:
GpciContentTypeConversion
Converte il valore verso il tipo scelto cercando la globale inerente.
Parametri
- $content - stringa - contenuto da convertire - default:''
- $type - stringa - tipo di contenuto (vedi lista valori qui sotto) - default:'string'
- $returnArray - booleano - se ritornare il valore di tipo array (altrimenti verrà convertirlo a stringa) - default:false
Return
Contenuto convertito, null se il tipo è none.
Note
Se il parametro type contiene virgole il valore verrà utilizzato nel seguente modo di esempio:
$var = GpciContentTypeConversion( $content='post,page', $type='posttypespublic,arraystrings' );
//Risultato: ['post','page'] - In gutenberg ci sarà un controllo valore associato (vedi gpci/query post types)
$var = GpciContentTypeConversion( $content='', $type='date,string,date' );
//Risultato: 'date' - In gutenberg NON ci sarà un controllo valore associato (vedi gpci/query order)
Esempi
//titolo post corrente
$PostTitle = GpciContentTypeConversion( $content='title,id', $type='wp' );
//permalink post con id 34
$PostTitle = GpciContentTypeConversion( $content='permalink,34', $type='wp' );
//valore campo metabox con id comunicazione relativo al post corrente
$PostTitle = GpciContentTypeConversion( $content='comunicazione,id', $type='mb' );
//Conversione verso il risultato della funzione con nome funzionePersonalizzata
$var = GpciContentTypeConversion( $content='funzionePersonalizzata', $type='function' );
//tipo none
$AnchorType = $block['attrs']['AnchorType'] ?? 'none';
$anchor = GpciContentTypeConversion( $anchor, $AnchorType );
if( !is_null( $anchor ) ){ $WpProcessor = true; }
//oppure
$InitialValueType = $block['attrs']['InitialValueType'] ?? 'none';
$InitialValue = $block['attrs']['InitialValue'] ?? '';
$InitialValue = GpciContentTypeConversion( $InitialValue, $InitialValueType );
if( !is_null( $InitialValue ) ){
if( $InitialValue != '' ){ $block_content.="<script>GetCurrentBlockFromCurrentScript().querySelector( '$tag' ).value='$InitialValue';</script>"; }
}
Frontend
$finalContent = GpciContentTypeConversion( $finalContent, $block_attributes['ContentType'] );
Backend
$UrlContent=GpciContentTypeConversion( $_POST['UrlContent'], $_POST['UrlContentType'], $block_attributes['PostId'] );
Risorse collegate:
GpciMaintenanceMode
Modifica l'output buffering in template manutenzione.
Parametri
- buffer - stringa - contenuto html corrente
Return
Stringa html modificata.
Esempi
array_push( $GLOBALS['gpci']['outputbuffering'], [ 'GpciMaintenanceMode', 20 ] );
GpciDataToWhitelistedFunctions
Processa i dati passandoli alle funzioni specificate ma verificando prima se le funzioni sono permesse.
Parametri
- data - stringa - dati che saranno processati dalle funzioni se se passano i controlli - default:''
- functions - stringa/array - nomi delle funzioni in whitelist che processeranno i dati separate da una virgola - default:''
Return
Dati dopo essere passati dalle funzioni se esistono e sono in whitelist, altrimenti una stringa di errore/nulla in base alla funzione ErrorMessage.
Eccezioni
Ho inserito alcune eccezioni che quindi non hanno bisogno di essere inserite in whitelist in quanto sempre usabili:
- ++ - aumenta il valore, se numerico, di 1
Esempi
Creare la funzione e metterla in whitelist
function ConvertiData( $data ){
if( !is_numeric( $data ) ){ $data = strtotime( $data ); }
if( is_numeric( $data ) ){
$formatter = new IntlDateFormatter( 'it_IT', IntlDateFormatter::LONG, IntlDateFormatter::MEDIUM );
$formatter->setPattern('d MMMM yyyy, HH:mm');
$data = $formatter->format($data);
}
return $data;
}
Usare la funzione
if( $functions ){
$data = GpciDataToWhitelistedFunctions( $data, $functions='ConvertiData' );
}
Risorse collegate:
GpciBlocksRegistration
Registra i blocchi gutenberg personalizzati del tema padre e figlio. La funzione è ricorsiva, cerca anche nelle sottocartelle in questo modo:
- file .js - registrerà lo script con handle $caller-block-nome file, la versione del file sarà calcolata in tempo reale per i blocchi del tema figlio e la versione del tema padre per gli altri
- se esiste un file php omonimo lo includerà e userà la funzione interna per generare il blocco via php (la funzione dovrà obbligatoriamente chiamarsi block_nome file)
Parametri
- $BlocksPathList - stringa - percorso senza slash finale della cartella che contiene i files dei blocchi
- $caller - stringa - gpci se sono blocchi del tema padre, custom se di quello figlio
Return
Nulla.
Esempi
GpciBlocksRegistration( gpci\themeDir.'/blocks', $caller='gpci' );
//oppure
if( file_exists( gpci\themeChildDir.'/private/blocks' ) ){ GpciBlocksRegistration( gpci\themeChildDir.'/private/blocks', $caller='custom' ); }
Esempio file php:
<?php
function block_filename( $block_attributes, $content ){
$htmlString = '....';
return htmlString ;
}
Risorse collegate:
- hook init
- cartella /private/blocks/
GpciSetRenderGlobals
Imposta le globali di render nei filtri contenuto.
Parametri
- $params - array associativo o array vuoto - chiave dell'array
$GLOBALS['gpci']['render']e valore da impostare. Se array vuoto i valori della globale saranno impostati ai valori base - default:[]
Return
Nulla.
Valori base
I valori prima e dopo l'esecuzione della funzione (quindi esterni ai filtri contenuto)
$GLOBALS['gpci']['render']['current_hook'] = '';
$GLOBALS['gpci']['render']['pre_render'] = null;
$GLOBALS['gpci']['render']['parsed_block'] = [];
$GLOBALS['gpci']['render']['parent_block'] = null;
$GLOBALS['gpci']['render']['source_block'] = [];
$GLOBALS['gpci']['render']['block_content'] = '';
$GLOBALS['gpci']['render']['block'] = [];
$GLOBALS['gpci']['render']['instance'] = null;
$GLOBALS['gpci']['render']['postId'] = 0;
$GLOBALS['gpci']['render']['postType'] = false;
$GLOBALS['gpci']['render']['commentId'] = '0';
$GLOBALS['gpci']['render']['query'] = [];
$GLOBALS['gpci']['render']['page '] = 0;
Notare che il framework imposta a priorità 0, tramite questa funzione, le proprie globali di render per alcuni contesti interni e per rendere disponibili le globali nella conversione dinamica. Saranno resettate a priorità 101.
Esempi
//inserisce nella globale i valori del blocco corrente più quelli di contesto
GpciSetRenderGlobals( [
'block' => $block,
'instance' => $instance,
'postId' => $instance->context['postId'] ?? 0,
'commentId' => $instance->context['commentId'] ?? '0'
] );
//imposta i valori ai predefiniti (hook render_block priorità 101)
GpciSetRenderGlobals();
Altre risorse collegate:
GpciHtmlQuery
Esegue una query in formato css su una stringa html utilizzando php HTMLDocument. Se non esiste verrà auto incluso e utilizzato symphony CssSelector Component.
Parametri
- $html - stringa html su cui eseguire la query - default:''
- $query - stringa - query in formato css - default:'*'
- $args- array associativo - argomenti aggiuntivi - default:[]
Return
Array contenente il dom inizializzato e i nodi trovati dalla query.
Esempi
//inserisce i nomi validi del form nella globale inerente
list( $dom, $nodes ) = GpciHtmlQuery( $block_content, '[name]' );
$names = [];
foreach( $nodes as $node ){
if( $node->hasAttribute( 'name' ) ){
$name = $node->getAttribute('name');
if( !in_array( $name, $names ) ){ $names[] = $node->getAttribute('name'); }
}
}
$GLOBALS['gpci']['forms'][$id]['ValidNames'] = $names;
//modifica anche l'html rimuovendo i nodi da cifrare
if( $node->hasAttribute( 'data-to-encrypt' ) ){
$EncryptedData[$name] = $node->getAttribute('value');
$node->parentNode->removeChild( $node );
}
$block_content = $dom->saveHTML();
//ordina i nodi per profondità (più profondi prima)
list( $dom, $nodes ) = GpciHtmlQuery( $html, $query, $args[ 'order'=>'depth' ] );
Documentazione rilevante:
gpci_block_core_comment_template_render_comments
Copia della funzione interna wordpress block_core_comment_template_render_comments definita nel file comment-template.php. Aggiunge l'id del commento corrente alla globale $GLOBALS['comment']. Verrà rimossa quando la modifica verrà integrata nel core in quanto le variabili di contesto sono disponibili soltanto nell'hook render_block e accedere ai commenti direttamente tramite php è molto più comodo in questo framework.
Documentazione rilevante:
gpci_render_block_core_post_template
Copia della funzione interna wordpress render_block_core_post_template definita nel file post-template.php. Aggiunge le informazioni alla variabile di contesto blocco CurrentQuery. Verrà rimossa quando le modifiche verranno integrate nel core in quanto non ho trovato altri modi semplici e puliti per ottenere le informazioni sulle queries (come indice del post corrente, numero di posts trovati, ecc...)
Documentazione rilevante:
GpciFormAction
Esegue un'azione su un form ajax o php. Creata per non ripetere il codice quando il form è inviato via php o ajax. I controlli servono perlopiù a verificare che il client non abbia modificato l'html prima di inviarlo.
Parametri
- $action - stringa - azione da eseguire
- $FormAttrs - array - attributi del blocco gutenberg gpci/form
- $args - array - argomenti aggiuntivi richiesti dall'azione
Return
In base all'azione: nulla per le azioni sanitize e CopyToSession, stringa oppure true per le azioni CheckValidNames e CheckRequireds. In quest'ultimo caso la stringa sarà un messaggio di errore mentre true indica che tutti i campi inviati sono ok.
Azioni
- sanitize
Sanifica la superglobal $_GET o $_POST in base al metodo di invio e alle sanificazioni selezionate nel blocco gutenberg. Se richiesta una sanificazione di tipo auto $_FILES sarà sanificato automaticamente indipendentemente dal method.
$args
Nessuno.
Esempi
GpciFormAction( 'sanitize', $block_attributes, [] );
- CheckValidNames
Controlla che tutti i names siano validi nella superglobale di invio del form.
$args
- ValidNames - array - default:[] - array di nomi validi
Esempi
$CheckValidNames = GpciFormAction( 'CheckValidNames', $block['attrs'], [ 'ValidNames'=>$ValidNames ] );
if( is_string( $CheckValidNames ) ){ return ErrorMessage( $ErrorOrigin, $CheckValidNames, false, true ); }
- CheckRequireds
Controlla che tutti i names required siano presenti e non siano vuoti.
$args
- RequiredNames - array - default:[] - array di nomi required
Esempi
$CheckValidNames = GpciFormAction( 'CheckValidNames', $block['attrs'], [ 'ValidNames'=>$ValidNames ] );
if( is_string( $CheckValidNames ) ){ return ErrorMessage( $ErrorOrigin, $CheckValidNames, false, true ); }
- CheckValidValues
Controlla che tutti i campi supportati abbiamo un valore valido.
$args
- ValidValues - array - default:[] - array di valori validi per ogni campo
Esempi
$CheckValidValues = GpciFormAction( 'CheckValidValues', $block['attrs'], [ 'ValidValues'=>$ValidValues ] );
if( is_string( $CheckValidValues ) ){ return ErrorMessage( $ErrorOrigin, $CheckValidValues, false, true ); }
- CopyToSession
Dopo le sanificazioni copia in sessione il contenuto della richiesta GET o POST.
$args
Nessuno.
Esempi
GpciFormAction( 'CopyToSession', $block_attributes, [] );
Risorse collegate:
GpciSchemaAction
Esegue un'azione riguardanti i dati strutturati ma ottimizzata per gli hooks e le procedure interne. E' pensata per semplificare l'aggiunta di dati strutturati da campi personalizzati e specificando solo una volta le proprietà direttamente nei cicli query. Usata internamente nel costruttore schema del blocco gutenberg gpci/head.
Parametri
- $action - stringa - azione da eseguire
- $args - array - argomenti aggiuntivi richiesti dall'azione
Return
In base all'azione.
Azioni
- GlobalToHead
Genera gli script schema dalla globale $GLOBALS['gpci']['headTags']['schema']. Se l'elemento ha una chiave di tipo stringa (schema costruttore) verrà usata come id/nome dello script, altrimenti lo script sarà generico (schema generico). Non ritorna nulla in quanto l'azione farà un echo del contenuto direttamente.
$args
Nessuno.
Esempi
//hook wp_head
GpciSchemaAction( $action='GlobalToHead', [] );
- ArrayToJson
Genera la stringa json da un array rappresentante le proprietà costruita con json_encode. Questa azione è specifica per il costruttore schema. Ogni proprietà del costruttore (che sarà sempre un array contenente valore effettivo e opzioni aggiuntive come la rimozione di apici) sarà valutata in base alle opzioni, al valore e al risultato della funzione json_encode. I tags html saranno rimossi tramite la funzione wp_strip_all_tags mantenendo eventuali a capo.
Ritorna la stringa json comprese le parentesi graffe di apertura e chiusura.
$args
- props - array - array da convertire (comprendente le opzioni del costruttore)
Esempi
$json = GpciSchemaAction( 'ArrayToJson', [ 'props'=>$value ] );
GpciVirtualPosts
Ritorna posts virtuali pre mappati nei contesti in cui posso essere selezionati semplicemente (pagina impostazioni ajax azioni su query e blocco gutenberg gpci/query-loop).
Parametri
- $type - stringa
- $args - array - argomenti aggiuntivi richiesti dall'azione
Return
Array di posts virtuali
$Type
- FolderActionFiles
Post virtuali mappati da files in una cartella di partenza secondo questa tabella:
| Descrizione/campo | Campo filtrabile |
|---|---|
| Nome file senza estensione | post_title |
| Nome file con estensione | post_name |
| Mime completo | post_mime_type |
| Data modifica file convertito in sql | post_modified |
| Contenuto file (se umanamente leggibile e quindi filtrabile) | post_content |
| Grandezza file in byte | size |
| Larghezza immagine (0 se non applicabile) | width |
| Altezza immagine (0 se non applicabile) | height |
| Estensione file | extension |
$args
Nessuno.
Esempi
$VirtualPostsType = 'FolderActionFiles';
$query['virtual_posts'] = GpciVirtualPosts( $VirtualPostsType, [ 'folder'=>'wp_upload', 'posts_per_page'=>$query['offset'], 'offset'=>$query['offset'] ] );
GpciReturnValueOnConditions
Ritornerà il valore in base a eventuali condizioni contenute.
Parametri
- $value - qualsiasi - valore da processare - default: null
Return
Il valore dopo essere stato processato in questo modo:
- se il valore non è un array la funzione ritornerà il valore originale
- se ci sono condizioni da controllare le processa, e ritorna il resto dell'array come valore (null se il controllo non passa)
Esempi
$value = [
'conditions' => [
'operator'=>'OR',
[ 'condizione1' => 'condizione1' ],
[ 'condizione2' => 'condizione2' ]
],
'value' => 'Valore!'
]
//da funzione php GetConfig
if( $process_conditions === true ){ $value = GpciReturnValueOnConditions( $value ); }
GpciCheckShortcodesAndOutput (RIMUOVERE!)
Controlla se ci sono shortcodes in una stringa e la ritorna con gli shortcodes eseguiti. Quando la funzione è utilizzata nella conversione dinamica viene eseguita prima di convertire il valore al tipo scelto.
Parametri
- string - stringa
Return
Stringa con eventuali shortcodes convertiti.
Esempi
$content = GpciCheckShortcodesAndOutput( $content );
Risorse collegate:
GpciValueIterable
Converte il valore a stringa iterabile.
Parametri
- data - stringa - contenuto da convertire - default:''
- nesting - stringa - chiavi dell'array separate da una virgola, se -1 non ci sarà nesting - default:'-1'
Return
Contenuto convertito.
Esempi
$data = GpciValueIterable( $data, $nesting='chiave,sottochiave', $readable=true );
Risorse collegate:
GpciAjaxAction
Esegue le operazioni interne ajax:
- sovrascrive le superglobali
- filtra i dati
- imposta/resetta
$GLOBALS['gpci']['ajax']['current_args'] - esegue le queries dalla pagina impostazioni
Parametri
- $action - stringa - azione da eseguire
- $args - array associativo - argomenti dell'azione - default:[]
Return
in base all'azione.
Esempi
//sovrascrive GET o POST con i dati decifrati (per i controlli nel form)
GpciAjaxAction( 'MergeDecryptedDataWithMethod', [ 'DecryptedData'=>$DecryptedData ] );
//setta la globale che contiene gli argomenti utilizzabili
GpciAjaxAction( 'SetCurrentArgs', [ 'data'=>$DecryptedData, 'UnsetDefaultData'=>true ] );
Altre risorse collegate:
GpciMetaboxAction
Esegue operazioni php specifiche chiamate direttamente da una metabox.
Parametri
- $action - stringa - azione da eseguire
- $args - array associativo - argomenti dell'azione - default:[]
Return
in base all'azione.
Esempi
GpciMetaboxAction( 'gpci_core_options_ajaxactions' )
$meta_boxes[$k]['fields'] = GpciMetaboxAction( 'conditions_to_fields', [ 'fields'=>$meta_box['fields'] ] );
Altre risorse collegate:
GpciGetSubArrays
Ottiene i sotto arrays da un array contenitore (per le configurazioni da filtrare). La funzione si comporta in questo modo:
- se il contenitore è un oggetto lo converte ad array
- se il contenitore non è un array ritorna un contenitore vuoto
- rimuove i sotto arrays vuoti o senza chiave numerica
- filtra i sotto arrays tramite la query
- reindicizza il contenitore
- ritorna secondo gli argomenti inerenti
Parametri
- container - array/oggetto - array contenitore - default: []
- query - array associativo - queries da eseguire. La chiavi saranno cercate nei sotto arrays. I valori possono essere:
- EXISTS (o non specificato)
- NOT EXISTS
- IN (in formato array IN/valori)
- NOT IN (in formato array IN/valori)
- default: [] - args - array associativo - argomenti dell'azione - default:[]
- get - stringa/numero intero - quale/i elementi da ottenere dopo la query: * ritornerà tutto l'array filtrato, first o 0 il primo elemento, last l'ultimo elemento, altro numero il sotto array con l'indice corrispondente - default: *
- return - stringa - cosa ritornare: container per il contenitore filtrato, single per l'elemento singolo etratto dal contenitore (il contenitore deve contenere solo un elemento, altrimenti ritornerà un array vuoto), indexes per gli indici originali- default: container
- same_id_maintain - stringa - cosa mantenere in caso di id dupicati (solo se il return è un container): * per tutti, last per mantenere solo l'ultimo- default: *
Return
Array vuoto/filtrato o elemento singolo.
Esempi
$container = [
[
'id' => 'lavoro1',
'function' => 'funzione1'
],
[
'id' => 'lavoro2',
'function' => 'funzione2'
],
[
'id' => 'lavoro3',
'function' => 'funzione3'
]
];
//ottiene un contenitore vuoto
$container = GpciGetSubArrays( $container, $query=[ 'chiave_non_esistente' ] );
//contenitore con tutti gli elementi
$container = GpciGetSubArrays( $container, $query=[ 'id' ] );
//stessa cosa di
$container = GpciGetSubArrays( $container, $query=[ 'id'=>'EXISTS' ] );
//contenitore vuoto
$container = GpciGetSubArrays( $container, $query=[ 'id'=>'NOT EXISTS' ] );
//contenitore contenente gli arrays con id=lavoro1 e id=lavoro3
$container = GpciGetSubArrays( $container, $query=[ 'id'=>[ 'IN'=>['lavoro1','lavoro3'] ] ] );
//contenitore contenente l'array con id=lavoro2
$container = GpciGetSubArrays( $container, $query=[ 'id'=>[ 'NOT IN'=>['lavoro1','lavoro3'] ] ] );
//contenitore contenente l'array con id=lavoro2
$container = GpciGetSubArrays( $container, $query=[ 'id'=>[ 'IN'=>['lavoro2','lavoro3'] ] ], $args=[ 'get'=>'first' ] );
//stessa cosa di
$container = GpciGetSubArrays( $container, $query=[ 'id'=>[ 'IN'=>['lavoro2','lavoro3'] ] ], $args=[ 'get'=>0 ] );
//contenitore contenente l'array con id=lavoro3
$container = GpciGetSubArrays( $container, $query=[ 'id'=>[ 'IN'=>['lavoro2','lavoro3'] ] ], $args=[ 'get'=>'last' ] );
//ottiene il sotto array singolo senza il contenitore
$container = GpciGetSubArrays( $container, $query=[ 'id'=>[ 'IN'=>['lavoro2','lavoro3'] ] ], $args=[ 'get'=>'last', 'return'=>'single'] );
//ottiene gli indici originali, ossia: [1]
$container = GpciGetSubArrays( $container, $query=[ 'id'=>'lavoro2' ], $args=[ 'return'=>'indexes' ] );
//in caso di id duplicati nel contenitore mantiene solo l'ultimo elemento elimininado tutti gli altri
$container = GpciGetSubArrays( $container, $query=[ 'id'=>'lavoro2' ], $args=[ 'return'=>'container', 'same_id_maintain'=>'last' ] );
Risorse collegate:
GpciInternalAction
Esegue un'azione interna. Sostituirà tutte le altre funzioni interne che ha senso spostare qui.
Parametri
- action - stringa - azione da eseguire
- args - array associativo - argomenti dell'azione - default:[]
Return
in base all'azione.
Azioni
SetAjaxArgs
Filtra gli argomenti dell'azione ajax corrente e li inserisce nella globale php $GLOBALS['gpci']['ajax']['current_args'].
Esempi
GpciInternalAction( 'SetAjaxArgs', [ 'DecryptedData'=>$DecryptedData ] );
Risorse collegate:
Funzioni nei moduli
Le seguenti funzioni sono solitamente nel file callbacks.php relativo il modulo.
GpciUpdatePrintCss - modulo stampa
Crea o aggiorna (se modificato) il file style-print.css del tema child partendo dal file style.css ed effettuando le seguenti sostituzioni tramite php:
| Stringa originale | Diventa |
|---|---|
| max-width:781px | max-width:209mm |
| @media screen and (min-width:782px) and (max-width:1279px) | @media print and (min-width:210mm) and (max-width:296mm) |
| min-width:1280px | min-width:297mm |
| @media screen and (min-width:782px) | @media print and (min-width:210mm) |
- sostituisce max-width:781px con
Parametri
Nessuno.
Return
Nulla.
Usata in
- hook customize_save_after
- hook post_updated
