WordPress - RIP TutorialCapitolo 25: Esegui WordPress locale con XAMPP 70 introduzione 70 Examples...
Transcript of WordPress - RIP TutorialCapitolo 25: Esegui WordPress locale con XAMPP 70 introduzione 70 Examples...
WordPress
#wordpress
Sommario
Di 1
Capitolo 1: Iniziare con WordPress 2
Osservazioni 2
Versioni 3
Examples 4
Introduzione a WordPress 5
Temi di WordPress 5
Mappatura di URL a modelli specifici 5
Struttura di directory del tema di base 6
Esempio di "singolo" (modello per un singolo post) 6
Esempio di un "archivio" (modello per un elenco di più post) 7
Post, pagine, tipi di post personalizzati e campi personalizzati 7
Capitolo 2: add_action () 9
Sintassi 9
Parametri 9
Examples 9
Richiamo della funzione diretta 9
Callback di riferimento nome funzione 9
Callback del metodo statico di classe 10
Callback del metodo dell'oggetto 10
Capitolo 3: add_editor_style () 11
introduzione 11
Sintassi 11
Parametri 11
Examples 11
Caricamento di un singolo file CSS 11
Capitolo 4: add_menu_page () 12
introduzione 12
Sintassi 12
Parametri 12
Osservazioni 12
Examples 13
Aggiunta dell'elemento "Titolo pagina tema" alla barra di navigazione 13
OOP e come caricare script / stili nella pagina del menu 14
Capitolo 5: add_submenu_page () 16
introduzione 16
Sintassi 16
Parametri 16
Osservazioni 16
Examples 17
Aggiungere la "Pagina sottomenu" come una pagina secondaria di "Strumenti" alla barra di n 17
Capitolo 6: add_theme_support () 19
introduzione 19
Sintassi 19
Parametri 19
Osservazioni 19
Examples 19
Aggiunta del supporto per i temi per i formati dei post 19
Aggiunta del supporto per i temi per postare le miniature ai post 19
Capitolo 7: Admin Dashboard Widgets 21
introduzione 21
Sintassi 21
Parametri 21
Examples 21
Widget semplice (visualizza testo) 21
Capitolo 8: Aggiorna WordPress manualmente 23
Examples 23
VIA FTP 23
Capitolo 9: Aggiungi / rimuovi le informazioni di contatto per gli utenti con hook del fil 24
Examples 24
Abilitare i social network più popolari 24
Rimozione del metodo di contatto 25
Capitolo 10: Aggiungi Shortcode 26
Sintassi 26
Parametri 26
Osservazioni 26
Examples 26
Shortcode semplice per post recenti 26
Shortcode avanzato per i post recenti 27
Capitolo 11: AJAX 28
Examples 28
Richiesta AJAX con una risposta JSON 28
AJAX con .ajax () e WordPress Nonce 29
wp_ajax - funzionalità di base + controllo _wpnonce 30
Invio di ajax OOP utilizzando una classe semplice con nonce 31
Capitolo 12: API REST 35
introduzione 35
Osservazioni 35
Examples 36
Esempio di lavoro completo 36
Capitolo 13: Azioni e filtri 38
Sintassi 38
Parametri 38
Osservazioni 38
Examples 41
add_action - init 41
add_action - init - funzione anonima 41
add_action - init - all'interno dell'oggetto di classe 41
add_action - init - all'interno della classe statica 42
Capitolo 14: Ciclo principale alternato (pre_get_posts filter) 43
Sintassi 43
Parametri 43
Osservazioni 43
Examples 43
Targeting di loop ancora più specifico 43
Mostra i post di una sola categoria 44
I messaggi pre-get filtrano l'utilizzo di base 44
Escludi categoria dall'elenco di post modifica condividi 44
Cambia posts_per_page per il ciclo principale 45
Targeting del solo ciclo principale di WordPress 45
Capitolo 15: Ciclo WP_Query () 46
introduzione 46
Examples 46
Recupera gli ultimi 10 post 46
Capitolo 16: Codice corto 47
Examples 47
Registrazione di shortcode 47
Utilizzo di Shortcode nel backend di WordPress 47
Aggiunta di nuovi codici brevi 47
Utilizzo di Shortcode all'interno del codice PHP (temi e plugin) 48
Utilizzo di Shortcode in Widget 48
Capitolo 17: Come posso integrare Markdown editor con Add-on del ripetitore Advance Custom49
Examples 49
Aggiungi MarkDown Editor 49
Capitolo 18: Crea un modello per il tipo di messaggio personalizzato 50
Examples 50
Creazione di un modello personalizzato per il libro di tipo Post personalizzato 50
Modelli di tipo di messaggio personalizzato 50
Archivio tipo di post personalizzato: 50
Modello singolo post personalizzato: 52
Capitolo 19: Crea un post programmaticamente 54
Sintassi 54
Parametri 54
Osservazioni 54
argomenti 54
Evita i messaggi duplicati 56
Spiegazione 56
Examples 56
introduzione 56
Crea un post di base 56
Crea una pagina di base 57
Capitolo 20: Creare un modello personalizzato 58
Examples 58
Creazione di un modello vuoto di base 58
Compreso l'intestazione e il piè di pagina nel nostro modello 59
Modello personalizzato con contenuto 60
Capitolo 21: Creazione di plugin WordPress 62
introduzione 62
Examples 62
Setup minimo di una cartella e file di plugin 62
Capitolo 22: Customizer Hello World 64
Parametri 64
Examples 64
Ciao esempio del mondo 64
Capitolo 23: Debug 66
introduzione 66
Osservazioni 66
Examples 66
WP_DEBUG 66
WP_DEBUG_LOG 66
WP_DEBUG_DISPLAY 66
SCRIPT_DEBUG 67
SAVEQUERIES 67
Esempio di wp-config.php e buone pratiche per il debug 67
Vedi i log in un file separato 68
Capitolo 24: dentro 69
Sintassi 69
Osservazioni 69
Examples 69
Elaborazione dei dati di richiesta $ _POST 69
Elaborazione dei dati di richiesta $ _GET 69
Registrazione di un tipo di messaggio personalizzato 69
Capitolo 25: Esegui WordPress locale con XAMPP 70
introduzione 70
Examples 70
1. Installazione di XAMPP 70
2. Configurare un database dopo aver installato XAMPP 70
3. Installazione di WordPress dopo aver installato il database 70
Capitolo 26: Esercizi personalizzati con excerpt_length e excerpt_more 72
Examples 72
Limita la lunghezza dell'estratto a 50 parole 72
Aggiunta di un collegamento Leggi altro alla fine dell'estratto 72
Aggiunta di alcuni punti alla fine dell'estratto 73
Capitolo 27: Fare richieste di rete con l'API HTTP 75
Sintassi 75
Parametri 75
Osservazioni 75
ritorna 75
Examples 75
OTTIENI una risorsa JSON remota 75
Capitolo 28: Funzione: add_action () 76
Sintassi 76
Parametri 76
Osservazioni 76
Examples 76
Azione base Hook 76
Azione Hook Priority 77
Agganciare i metodi di classe e oggetto alle azioni 77
Oggetto Metodo Azione Ganci 78
Ganci di azione del metodo di classe 78
Capitolo 29: Funzione: wp_trim_words () 80
Sintassi 80
Parametri 80
Examples 80
Ritaglio dei contenuti del post 80
Capitolo 30: Gerarchia dei modelli 81
Osservazioni 81
Examples 81
introduzione 81
Debug 83
Capitolo 31: get_bloginfo () 84
introduzione 84
Sintassi 84
Parametri 84
Osservazioni 84
Examples 86
Ottenere il titolo del sito 86
Ottenere la tagline del sito 87
Ottenere l'URL del tema attivo 88
Ottieni l'URL del sito 89
Ottieni l'indirizzo email dell'amministratore del sito 89
Capitolo 32: get_home_path () 90
introduzione 90
Parametri 90
Osservazioni 90
Differenza importante tra get_home_path() e ABSTPATH 90
Usandolo nel tuo codice 91
Examples 91
uso 91
Capitolo 33: get_option () 92
introduzione 92
Sintassi 92
Parametri 92
Osservazioni 92
Examples 92
Mostra il titolo del blog 92
Nome del blog in stile H1 93
Mostra set di caratteri 93
Gestire le opzioni non esistenti 93
Capitolo 34: get_permalink () 94
introduzione 94
Sintassi 94
Parametri 94
Osservazioni 94
Examples 94
Semplice utilizzo di get_parmalink 94
Specificare il post per ottenere il collegamento 94
Ottieni il link senza il nome del post 95
Capitolo 35: get_template_part () 96
Sintassi 96
Parametri 96
Examples 96
Carica una parte modello da una sottocartella 96
Ottieni un file specifico 96
Capitolo 36: get_template_part () 97
introduzione 97
Sintassi 97
Parametri 97
Examples 97
Incluso un modello personalizzato 97
Incluso un modello personalizzato con un nome file separato dal trattino 97
Incluso un modello personalizzato da una directory 98
Incluso un modello personalizzato con un nome file separato da un trattino situato all'int 98
Passaggio della variabile all'ambito del modello personalizzato 98
Capitolo 37: get_template_part () 99
Sintassi 99
Parametri 99
Examples 99
Caricamento parte del modello 99
Capitolo 38: get_the_category () 100
introduzione 100
Sintassi 100
Parametri 100
Osservazioni 100
Examples 100
Ottieni tutti i nomi delle categorie del post 101
Ottieni tutti gli ID di categorie del post 101
Capitolo 39: get_the_title () 102
introduzione 102
Sintassi 102
Parametri 102
Osservazioni 102
Examples 102
Semplice utilizzo di get_the_title 102
Ottieni il titolo di un ID post specificato 102
Capitolo 40: HOME_URL () 104
Sintassi 104
Parametri 104
Examples 104
Ottenere l'URL della casa 104
Indirizzo del sito 104
Capitolo 41: il titolo() 105
introduzione 105
Sintassi 105
Parametri 105
Osservazioni 105
Examples 105
Semplice uso di the_title 105
Stampa del titolo con il codice prima e dopo 105
Capitolo 42: Installazione e configurazione 107
Examples 107
Wordpress su LAMP 107
Installazione WP in MAMP 108
Capitolo 43: L'oggetto $ wpdb 110
Osservazioni 110
Examples 110
Selezione di una variabile 110
Selezione di più righe 110
Capitolo 44: La barra di amministrazione (aka "The Toolbar") 112
Osservazioni 112
Examples 112
Rimozione della barra degli strumenti di amministrazione da tutti tranne gli amministrator 112
Rimozione della barra degli strumenti di amministrazione utilizzando i filtri 112
Come rimuovere WordPress Logo dalla barra di amministrazione 112
Aggiungi il tuo logo personalizzato e il link personalizzato nella pagina di accesso dell' 113
Capitolo 45: Messaggi di ricerca 114
Sintassi 114
Parametri 114
Osservazioni 114
Non utilizzare mai query_posts () 114
Examples 115
Usando l'oggetto WP_Query () 115
Utilizzando get_posts () 115
Capitolo 46: Meta Box 117
introduzione 117
Sintassi 117
Osservazioni 117
Examples 117
Un semplice esempio con un input regolare e un input select 117
Capitolo 47: Migrazione del sito 120
Sintassi 120
Examples 120
Aggiornamento delle tabelle con un nuovo URL 120
Capitolo 48: Nozioni di base sui temi del bambino 121
Sintassi 121
Osservazioni 121
Examples 121
2) Lo scopo 121
Definizione e requisiti 122
3) Sovrascrittura modello 122
Sostituzione delle risorse 123
Capitolo 49: Nozioni di base sulla personalizzazione (aggiungi pannello, sezione, impostaz 125
Examples 125
Aggiungi un pannello di personalizzazione 125
Aggiungi una sezione di personalizzazione con le impostazioni di base e i relativi control 125
Capitolo 50: Opzioni API 129
introduzione 129
Sintassi 129
Osservazioni 129
Examples 129
get_option 130
add_option 130
delete_option 130
update_option 130
Capitolo 51: Post formati 131
Osservazioni 131
Examples 131
Aggiunta di un post al tema 131
Aggiungi post-formati alla "pagina" post_type 131
Registra il tipo di messaggio personalizzato "my_custom_post_type" 131
Aggiungi post-formati a post_type 'my_custom_post_type' 132
Registra il tipo di messaggio personalizzato "my_custom_post_type" con il parametro "suppo 132
Aggiungi supporto tematico per post 132
Chiamata di funzione 132
Capitolo 52: Proteggi la tua installazione 133
Osservazioni 133
Examples 133
Disattiva Editor di file 133
Muovi wp-config.php 133
Imposta un prefisso personalizzato per le tabelle di WordPress 134
Capitolo 53: Rimuovi interruzioni di riga automatiche dal contenuto e dall'estratto 139
introduzione 139
Osservazioni 139
Examples 139
Rimuovi i filtri 139
Funzione per rimuovere i filtri 139
Capitolo 54: Rimuovi la versione da Wordpress e Stylesheets 141
introduzione 141
Sintassi 141
Parametri 141
Osservazioni 141
Examples 141
Rimuovi i numeri di versione da css / js 141
Rimuovi i numeri di versione da WordPress 142
Capitolo 55: Scansioni di script 143
Sintassi 143
Parametri 143
Examples 143
Scoraggiando gli script in functions.php 143
Script Enqueue solo per IE 144
Scoraggiando script in modo condizionale per pagine specifiche 144
Capitolo 56: Shortcode con attributo 146
Sintassi 146
Parametri 146
Osservazioni 146
Examples 146
Esempi di Shortcode 146
Creazione di uno shortcode autochiudente 147
Creazione di uno shortcode autochiudente con parametri 147
Creare un shortcode che racchiude 147
Shortcode in Widget 148
Capitolo 57: Shortcodes 149
Examples 149
Introduzione Shortcode 149
Pulsante shortcode 149
Capitolo 58: Sicurezza in WordPress - Escaping 151
Sintassi 151
Osservazioni 151
Examples 151
sfuggire i dati nel codice HTML 151
sfuggire a un URL 151
dati di escape nel codice js 152
attributi di fuga 152
dati di fuga in textarea 152
Capitolo 59: Sicurezza in WordPress - Sanitizzazione 153
Sintassi 153
Osservazioni 153
Examples 153
Disinfetta il campo di testo 153
Sanificare il titolo 153
Sanificare l'e-mail 154
Sanitizza la classe html 154
Sanitizza il nome del file 154
Disinfetta il nome utente 154
Capitolo 60: sidebars 155
Sintassi 155
Parametri 155
Osservazioni 155
Examples 155
Registrazione delle barre laterali 155
Ottieni Sidebar 156
Capitolo 61: Stili accattivanti 157
Sintassi 157
Parametri 157
Examples 157
Compreso il file css interno con un altro file css come dipendenza 157
Compreso il file css interno 157
Compreso il file css esterno 158
Accoda i fogli di stile solo per IE 158
Compreso il file css interno per la tua classe Plugin 158
Aggiungi fogli di stile alternativi 158
Capitolo 62: Sviluppo di plugin 160
Sintassi 160
Parametri 160
Osservazioni 160
Examples 161
Filtro 161
Azione 161
Esempi di sviluppo di plugin: Widget canzone preferita 161
Capitolo 63: Tassonomie 164
Sintassi 164
Parametri 164
Examples 164
Esempio di registrazione di una tassonomia per i generi 164
Aggiungi categoria nella pagina 165
Aggiungi categorie e tag alle pagine e inseriscile come classe in 165
Aggiungi categorie e tag alle pagine e inserisci come classe in 166
Capitolo 64: Tema Wordpress e sviluppo del tema bambino 168
introduzione 168
Examples 168
Sviluppare il tuo tema 168
Capitolo 65: Temi 171
introduzione 171
Examples 171
Temi di WordPress 171
Come scegliere un tema 171
Aggiornamento disponibile 171
Installa i temi 172
Creare un tema personalizzato 173
Capitolo 66: template_include 174
Parametri 174
Osservazioni 174
Examples 174
Semplice esempio 174
Altro esempio di Adv 175
Capitolo 67: The Loop (ciclo principale di WordPress) 176
Examples 176
Struttura del ciclo WordPress di base 176
Sintassi del loop alternativo 176
Maneggiare nessun oggetto nel loop 176
Capitolo 68: Tipi di messaggi personalizzati 178
Sintassi 178
Parametri 178
Examples 178
Registrazione di un tipo di messaggio personalizzato 178
Aggiungi tipi di post personalizzati alla query principale 179
Aggiunta di tipi di post personalizzati al feed RSS principale 180
Registra il tipo di messaggio personalizzato 180
Tipo di messaggio personalizzato utilizzando Twenty Fifteen WordPress Theme 181
Tipo di post personalizzato nella ricerca predefinita 182
Capitolo 69: wp_get_current_user () 183
Sintassi 183
Examples 183
Ottenere l'utente corrente 183
Utilizza il ciclo foreach per ottenere le informazioni utente da wp_get_current_user () 183
Capitolo 70: wp_get_current_user () 184
Examples 184
Ricevi le informazioni dell'utente connesso corrente 184
Capitolo 71: WP-CLI 185
introduzione 185
Examples 185
Gestisci temi 185
Gestisci i plugin 185
Gestisci WP-CLI stessa 186
Scarica, installa, aggiorna e gestisci l'installazione di WordPress. 187
Gestisci gli utenti 187
Eseguire le operazioni di base del database utilizzando le credenziali memorizzate in wp-c 187
Capitolo 72: WP-Cron 189
Examples 189
wp_schedule_event () esempio 189
intervallo di ricorrenza personalizzato in wp_schedule_event () 189
Titoli di coda 191
Di
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: wordpress
It is an unofficial and free WordPress ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official WordPress.
The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to [email protected]
https://riptutorial.com/it/home 1
Capitolo 1: Iniziare con WordPress
Osservazioni
WordPress è un Content Management System (CMS) open source che viene utilizzato per creare e gestire siti Web. WordPress è il CMS più popolare su Internet da un miglio di campagna, alimentando circa la metà di tutti i siti Web CMS al momento della scrittura e circa un quarto di tutti i siti Web su Internet.
WordPress ha iniziato la sua vita come piattaforma per i blog, ma si è evoluto nel corso degli anni per essere adatto alla maggior parte dei tipi di siti web. L'interfaccia può essere utilizzata senza la conoscenza della codifica, rendendola popolare per i principianti e gli sviluppatori che desiderano potenziare i propri clienti nella gestione del proprio sito web.
Un altro grande fattore nella popolarità di WordPress è la sua flessibilità, dovuta principalmente al plugin del core e ai sistemi di tematizzazione. Il sistema di plugin rende facile estendere le funzionalità di base senza modificare il codice di base. In modo simile, il sistema di temi facilita la modifica del layout e dell'estetica del sito web. Ora ci sono migliaia di plugin e temi gratuiti per WordPress gratuiti. Molti di questi si trovano rispettivamente nel repository di plugin wordpress.org e nel repository di temi .
WordPress è sviluppato dalla propria comunità, ma è fortemente associato alla società Automattic , che impiega molti sviluppatori core di WordPress.
https://riptutorial.com/it/home 2
Codice
WordPress si basa sul linguaggio di scripting del server PHP e sul linguaggio di query MySQL . WordPress utilizza MySQL come archivio dati per il contenuto e la configurazione dell'utente. Il PHP risolve i dati dei contenuti in una pagina Web HTML con tutte le risorse necessarie.
wordpress.com vs wordpress.org
Puoi utilizzare WordPress iscrivendoti al servizio wordpress.com di Automattic e ospitando il tuo sito Web sui loro server, oppure puoi scaricare il software WordPress da wordpress.org e ospitare il tuo sito web su un server sotto il tuo controllo. La prima opzione è semplice ma non puoi modificare alcun codice sito. È possibile apportare modifiche solo tramite l'interfaccia di WordPress. La seconda opzione richiede più lavoro, ma ti dà la flessibilità di fare quello che vuoi con il codice del tuo sito web. Se sei un utente di StackOverflow, probabilmente andrai con la seconda opzione.
Open Source
WordPress è un software open source che significa che è gratuito e chiunque può visualizzare il codice sorgente e contribuire ad esso. I potenziali collaboratori possono iniziare leggendo la pagina di Contribuzione del codice WordPress. .
I bug possono essere segnalati inoltrando un bug sul tracker dei biglietti di WordPress .
Documentazione
WordPress è ufficialmente documentato nel codice WordPress su WordPress.org . Gli sviluppatori che lavorano con WordPress saranno particolarmente interessati alla sezione Codex degli sviluppatori e alla sezione di riferimento degli sviluppatori di wordpress.org .
Versioni
Versione Data di rilascio
1.0 2004/01/03
1.2 2004-05-22
1.5 2005-02-17
2.0 2005/12/26
2.1 2007-01-22
2.2 2007-05-16
2.3 2007-09-24
2.5 2008-03-29
https://riptutorial.com/it/home 3
Versione Data di rilascio
2.6 2008-07-15
2.7 2008-12-10
2.8 2009-06-10
2.9 2009-12-18
3.0 2010-06-17
3.1 2011-02-23
3.2 2011-07-04
3.3 2011-12-12
3.4 2012-06-13
3.5 2012/12/11
3.6 2013/08/01
3.7 2013/10/24
3.8 2013/12/12
3.9 2014/04/16
4.0 2014/09/04
4.1 2014/12/17
4.2 2015/04/23
4.3 2015/08/18
4.4 2015/12/08
4.5 2016/04/12
4.6 2016/08/16
4.7 2016/12/06
4.8 2017/06/08
Examples
https://riptutorial.com/it/home 4
Introduzione a WordPress
WordPress [WP] è un sistema di gestione dei contenuti open source per la creazione di app, siti Web e blog. WP è scritto in PHP e usa MySQL come archivio dati per il contenuto e la configurazione dell'utente. Ha un ricco ecosistema di plugin e temi e gode di una vivace comunità open source, buona documentazione e basse barriere all'entrata. Usabilità e documentazione per sviluppatori possono essere trovati nel codice WP .
Una parte di WordPress che lo rende diverso dalla maggior parte degli altri prodotti CMS è la sua Programmazione guidata dagli eventi . Questo è un modo diverso di programmazione e rappresentazione logica dell'architettura MVC (Model View Controller) che viene utilizzata dalla maggior parte dei sistemi CMS. WordPress utilizza i concetti di Azioni e filtri. Formano una coda di eventi che consentono a plug-in e temi di inserire, modificare o addirittura rimuovere parti della pagina e / o delle parti dell'applicazione web finale. Un concetto simile è la compilazione JIT o Just-In-Time.
Mentre storicamente WordPress è stato conosciuto come piattaforma di blogging, e potrebbe non perdere mai questo stigma, il focus del core team di WordPress è chiaramente cambiato. Con lo Stato della Parola 2016 , del fondatore Matthew Mullenweg , possiamo vedere un chiaro cambiamento di obiettivi, visione e impegno. Nel 2016, abbiamo visto progressi sorprendenti quando il core di WordPress ha adottato la maggior parte del popolare plug-in REST API . Questa era chiaramente una delle intenzioni del core team all'inizio quando hanno iniziato uno sforzo audace di creare un pannello di amministrazione CMS JavaScript front-end, che si distacca dallo standard d'oro che abbiamo visto per così tanti anni; lo chiamarono Calpyso .
Temi di WordPress
Mappatura di URL a modelli specifici
Per comprendere pienamente i temi di WordPress, è necessario comprendere due concetti principali:
permalink1. La gerarchia dei modelli2.
Un permalink è un URL (o collegamento permanente, non modificabile, verso una risorsa specifica.
example.com/about-us/ (una pagina in WP)•example.com/services/ (un elenco di più elementi, chiamato anche "archivio" nel gergo di WP)
•
example.com/services/we-can-do-that-for-you/ (un singolo elemento)•
Quando un utente richiede un URL, WordPress esegue il reverse engineering del permalink per capire quale modello deve controllare il suo layout. WordPress cerca i vari file modello che potrebbero controllare questo particolare contenuto e, in definitiva, dà la preferenza a quello più
https://riptutorial.com/it/home 5
specifico che trova. Questo è noto come Gerarchia dei modelli.
Una volta che WP trova il modello di visualizzazione corrispondente nella gerarchia, utilizza tale file per elaborare e rendere la pagina.
Ad esempio: index.php (il modello predefinito, "catch-all") verrà sovrascritto da archive.php (il modello predefinito per il contenuto basato su elenchi), che sarà a sua volta sovrascritto da archive-services.php (un modello file specifico per l'archivio denominato "servizi").
Ecco un ottimo riferimento visivo per la gerarchia dei modelli
Struttura di directory del tema di base
Un tema semplice assomiglia a questo:
// Theme CSS style.css // Custom functionality for your theme functions.php // Partials to include in subsequent theme files header.php footer.php sidebar.php comments.php // "Archives", (listing views that contain multiple posts) archive.php author.php date.php taxonomy.php tag.php category.php // Individual content pages // Note that home and frontpage templates are not recommended // and they should be replaced by page templates singular.php single.php page.php front-page.php home.php // Misc. Utility Pages index.php (a catch-all if nothing else matches) search.php attachment.php image.php 404.php
Esempio di "singolo" (modello per un singolo
https://riptutorial.com/it/home 6
post)
<?php get_header(); ?> <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?> <h1><?php the_title(); ?></h1> <?php the_content(); ?> <?php comments_template( '', true ); ?> <?php endwhile; ?> <?php get_sidebar(); ?> <?php get_footer(); ?>
Cosa sta succedendo qui? In primo luogo, esso carica header.php (simile ad un PHP include o require), imposta il ciclo, visualizza the_title e the_content , poi include comments.php , sidebar.php e footer.php . The Loop esegue il sollevamento pesante, impostando un oggetto Post , che contiene tutte le informazioni per il contenuto attualmente visualizzato.
Esempio di un "archivio" (modello per un elenco di più post)
<?php get_header(); ?> <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?> <a href="<?php the_permalink(); ?>"<?php the_title(); ?></a> <?php the_excerpt(); ?> <?php endwhile; ?> <?php next_posts_link( 'Older Entries', $the_query->max_num_pages ); previous_posts_link( 'Newer Entries' ); ?> <?php get_sidebar(); ?> <?php get_footer(); ?>
In primo luogo, esso comprende header.php , imposta The Loop, e comprende sidebar.php e footer.php . Ma in questo caso ci sono più post nel ciclo, quindi viene mostrato un estratto con un link al singolo post. next_posts_link e previous_posts_link sono inoltre inclusi in modo che l'archivio possa impaginare i risultati.
Post, pagine, tipi di post personalizzati e campi personalizzati
WordPress supporta due tipi di contenuti: Posts e Pages . I post vengono in genere utilizzati per contenuti non gerarchici come i post dei blog. Le pagine vengono utilizzate per contenuti statici e
https://riptutorial.com/it/home 7
autonomi come la pagina Chi siamo o la pagina Servizi dell'azienda con sotto-pagine annidate.
A partire dalla versione 3.0, gli sviluppatori possono definire i propri tipi di post personalizzati per estendere la funzionalità di WordPress oltre le basi. Oltre ai tipi di post personalizzati, puoi anche creare i tuoi campi personalizzati da allegare ai tuoi post / pagine / tipi di post personalizzati, consentendoti di fornire un modo strutturato di aggiungere e accedere ai metadati all'interno dei tuoi modelli. Vedi: Campi personalizzati avanzati .
Leggi Iniziare con WordPress online: https://riptutorial.com/it/wordpress/topic/304/iniziare-con-wordpress
https://riptutorial.com/it/home 8
Capitolo 2: add_action ()
Sintassi
add_action ($ tag, $ function_to_add)•add_action ($ tag, $ function_to_add, $ priority)•add_action ($ tag, $ function_to_add, $ priority, $ accepted_args)•
Parametri
Parametro Dettagli
$ tag(stringa) Il nome dell'azione a cui verrà agganciata la procedura $function_to_add .
$ function_to_add
(chiamabile) La funzione / procedura chiamabile che si desidera chiamare.
$ priorità(int) Il livello di priorità a cui verrà eseguito $function_to_add . Opzionale. Predefinito 10.
$ accepted_args(int) Il numero di argomenti accettati dalla $function_to_add callable $function_to_add . Opzionale. Predefinito 1.
Examples
Richiamo della funzione diretta
add_action( 'init', function() { // do something here } );
Utilizzando un blocco funzione per agganciare una serie di istruzioni. Con il hook init , il set di istruzioni verrà eseguito subito dopo che wordpress ha completato il caricamento dei componenti necessari.
Callback di riferimento nome funzione
function my_init_function() { // do something here } add_action( 'init', 'my_init_function' );
Utilizzando il nome della funzione per agganciare una serie di istruzioni. Con il hook init , il set di
https://riptutorial.com/it/home 9
istruzioni verrà eseguito subito dopo che wordpress ha completato il caricamento dei componenti necessari.
Callback del metodo statico di classe
class MyClass { static function my_init_method() { // do something here } } add_action( 'init', array( 'MyClass', 'my_init_method' ) );
Utilizzare un metodo statico di una classe per agganciare una serie di istruzioni. Con il hook init , il set di istruzioni verrà eseguito subito dopo che wordpress ha completato il caricamento dei componenti necessari.
Callback del metodo dell'oggetto
class MyClass { function my_init_method() { // do something here } } $obj = new MyClass(); add_action( 'init', array( $obj, 'my_init_method' ) );
Usando un metodo di un oggetto per agganciare una serie di istruzioni. Con il hook init , il set di istruzioni verrà eseguito subito dopo che wordpress ha completato il caricamento dei componenti necessari.
Leggi add_action () online: https://riptutorial.com/it/wordpress/topic/6264/add-action---
https://riptutorial.com/it/home 10
Capitolo 3: add_editor_style ()
introduzione
La funzione consente all'utente di caricare fogli di stile per l'editor TinyMCE
Sintassi
add_editor_style ($ stylesheet)•
Parametri
Parametro Dettagli
$ foglio di stile
(matrice o stringa) (Opzionale) Nome del foglio di stile o matrice dello stesso, relativo alla radice del tema. Il valore predefinito è 'editor-style.css'
Examples
Caricamento di un singolo file CSS
Codice
function add_new_style() { add_editor_style( 'file-name-here.css' ); } add_action( 'admin_init', 'add_new_style' );
Spiegazione
Nel codice precedente, abbiamo usato add_editor_style per caricare il file css. Abbiamo anche utilizzato add_action per assicurarci che WordPress esegua la nostra funzione.
Leggi add_editor_style () online: https://riptutorial.com/it/wordpress/topic/9215/add-editor-style---
https://riptutorial.com/it/home 11
Capitolo 4: add_menu_page ()
introduzione
Questa funzione è di aggiungere un elemento nella barra di navigazione del pannello di amministrazione.
Sintassi
add_menu_page ($ page_title, $ menu_title, $ capability, $ menu_slug, $ function, $ icon_url, $ position)
•
Parametri
Parametro Dettagli
$ PAGE_TITLE
(stringa) Il testo da visualizzare nei tag del titolo della pagina quando il menu è selezionato.
$ menu_title (stringa) Il testo da utilizzare per il menu.
$ capacità (stringa) La capacità richiesta per questo menu da visualizzare all'utente.
$ menu_slug(stringa) Il nome slug per fare riferimento a questo menu (dovrebbe essere univoco per questo menu).
$ funzione(richiamabile) (opzionale) La funzione da chiamare per emettere il contenuto per questa pagina.
$ icon_url (stringa) (facoltativo) L'URL dell'icona da utilizzare per questo menu.
$ posizione(int) (opzionale) La posizione nell'ordine del menu dovrebbe apparire questa.
Osservazioni
Ecco un elenco delle posizioni predefinite (per $ posizione)
2 - Dashboard•4 - Separatore•5 - Post•10 - Media•15 - Collegamenti•20 - Pagine•
https://riptutorial.com/it/home 12
25 - Commenti•59 - Separatore•60 - Aspetto•65 - Plugin•70 - Utenti•75 - Strumenti•80 - Impostazioni•99 - Separatore•
Examples
Aggiunta dell'elemento "Titolo pagina tema" alla barra di navigazione
Codice
function add_the_theme_page(){ add_menu_page('Theme page title', 'Theme menu label', 'manage_options', 'theme-options', 'page_content', 'dashicons-book-alt'); } add_action('admin_menu', 'add_the_theme_page'); function page_content(){ echo '<div class="wrap"><h2>Testing</h2></div>'; }
Produzione
https://riptutorial.com/it/home 13
Spiegazione
Nel codice, abbiamo creato una funzione chiamata add_the_theme_page e abbiamo usato add_menu_page per aggiungere l'elemento alla barra di navigazione. Si prega di controllare la parte dei parametri in questa pagina per conoscere gli argomenti che abbiamo add_the_theme_page . Quindi abbiamo usato add_action per eseguire la nostra funzione add_the_theme_page . Infine, abbiamo creato la funzione page_content per visualizzare i contenuti nella pagina.
OOP e come caricare script / stili nella pagina del menu
<?php /* * Plugin Name: Custom Admin Menu */ class SO_WP_Menu {
https://riptutorial.com/it/home 14
private $plugin_url; public function __construct() { $this->plugin_url = plugins_url( '/', __FILE__ ); add_action( 'plugins_loaded', array( $this, 'init' ) ); } public function init() { add_action( 'admin_menu', array( $this, 'add_menu' ) ); } public function add_menu() { $hook = add_menu_page( 'My Menu', // Title, html meta tag '<span style="color:#e57300;">My Menu</span>', // Menu title, hardcoded style 'edit_pages', // capability 'dummy-page-slug', // URL array( $this, 'content' ), // output null, // icon, uses default 1 // position, showing on top of all others ); add_action( "admin_print_scripts-$hook", array( $this, 'scripts' ) ); add_action( "admin_print_styles-$hook", array( $this, 'styles' ) ); } public function content() { ?> <div id="icon-post" class="icon32"></div> <h2>Dummy Page</h2> <p> Lorem ipsum</p> <?php } # Printing directly, could be wp_enqueue_script public function scripts() { ?><script>alert('My page');</script><?php } # Enqueing from a CSS file on plugin directory public function styles() { wp_enqueue_style( 'my-menu', $this->plugin_url . 'my-menu.css' ); } } new SO_WP_Menu();
Ciò che è importante notare in questo esempio è che, quando si utilizza add_menu_page() , restituisce un hook che può essere utilizzato per indirizzare la nostra pagina esatta e caricare qui Stili e script. Un errore comune è accodare senza targeting e che riversa script e stili in tutto /wp-admin . Usando OOP possiamo memorizzare variabili comuni da utilizzare tra i metodi interni.
Leggi add_menu_page () online: https://riptutorial.com/it/wordpress/topic/9189/add-menu-page---
https://riptutorial.com/it/home 15
Capitolo 5: add_submenu_page ()
introduzione
Questa funzione consente di aggiungere un elemento secondario a un elemento esistente nella barra di navigazione del pannello di amministrazione.
Sintassi
add_submenu_page ($ parent_slug, $ page_title, $ menu_title, $ capability, $ menu_slug, $ function)
•
Parametri
Parametro Dettagli
$ parent_slug(stringa) Il nome slug per il menu genitore (o il nome del file di una pagina di amministrazione standard di WordPress).
$ PAGE_TITLE
(stringa) Il testo da visualizzare nei tag del titolo della pagina quando il menu è selezionato.
$ menu_title (stringa) Il testo da utilizzare per il menu.
$ capacità (stringa) La capacità richiesta per questo menu da visualizzare all'utente.
$ menu_slug(stringa) Il nome slug per fare riferimento a questo menu (dovrebbe essere univoco per questo menu).
$ funzione(chiamabile) (Opzionale) La funzione da chiamare per emettere il contenuto per questa pagina.
Osservazioni
Ecco una lista di lumache per $ parent_slug
Dashboard: "index.php"•Messaggi: "edit.php"•Media: "upload.php"•Pagine: "edit.php? Post_type = page"•Commenti: "edit-comments.php"•Tipi di post personalizzati: "edit.php? Post_type = your_post_type"•Aspetto: "temi.php"•Plugin: "plugins.php"•
https://riptutorial.com/it/home 16
Utenti: "users.php"•Strumenti: 'tools.php'•Impostazioni: "options-general.php"•Impostazioni di rete: "settings.php"•
Examples
Aggiungere la "Pagina sottomenu" come una pagina secondaria di "Strumenti" alla barra di navigazione
Codice
add_action('admin_menu', 'register_my_custom_submenu_page'); function register_my_custom_submenu_page() { add_submenu_page( 'tools.php', 'Submenu Page', 'My Custom Submenu Page', 'manage_options', 'my-custom-submenu-page', 'my_custom_submenu_page_content' ); } function my_custom_submenu_page_content() { echo '<div class="wrap">'; echo '<h2>Page Title</h2>'; echo '</div>'; }
Produzione
https://riptutorial.com/it/home 17
Spiegazione
Nel codice, abbiamo creato una funzione denominata register_my_custom_submenu_page e abbiamo usato add_submenu_page per aggiungere l'elemento alla barra di navigazione come figlio di tools.php, che è la pagina Strumenti.
Si prega di controllare la parte dei parametri in questa pagina per conoscere gli argomenti che abbiamo add_action . Quindi abbiamo usato add_action per eseguire la nostra funzione register_my_custom_submenu_page . Infine, abbiamo creato la funzione my_custom_submenu_page_content per visualizzare i contenuti nella pagina.
Leggi add_submenu_page () online: https://riptutorial.com/it/wordpress/topic/9193/add-submenu-page---
https://riptutorial.com/it/home 18
Capitolo 6: add_theme_support ()
introduzione
Questa funzione registra le funzionalità supportate dal tema.
Sintassi
add_theme_support ($ feature)•
Parametri
Parametro Dettagli
caratteristica $ (stringa) La funzione che si sta aggiungendo.
Osservazioni
Elenco di funzioni da utilizzare in $ feature:
'post-formati'•'post-miniature'•'HTML5'•'Custom-logo'•'custom-header-arrivi'•'Custom-header'•'Custom-fondo'•'Title-tag'•'Avviamento-content'•
Examples
Aggiunta del supporto per i temi per i formati dei post
add_theme_support( 'post-formats', array( 'formatone', 'formattwo' ) );
Aggiunta del supporto per i temi per postare le miniature ai post
add_theme_support( 'post-thumbnails', array( 'post' ) );
Il codice sopra riportato consente solo i postumi su tutti i post. Per abilitare la funzione su tutti i tipi di post, fai:
https://riptutorial.com/it/home 19
add_theme_support( 'post-thumbnails' );
Leggi add_theme_support () online: https://riptutorial.com/it/wordpress/topic/9216/add-theme-support---
https://riptutorial.com/it/home 20
Capitolo 7: Admin Dashboard Widgets
introduzione
Con un widget della dashboard di amministrazione puoi visualizzare qualsiasi tipo di informazione nella dashboard dell'amministratore. Puoi creare più widget se lo desideri. Puoi aggiungere il codice al functions.php del tuo tema o al tuo plugin.
Sintassi
add_action ($ tag, $ function_to_add, $ priority, $ accepted_args);•wp_add_dashboard_widget ($ widget_id, $ widget_name, $ callback, $ control_callback, $ callback_args);
•
Parametri
Parametro Dettagli
$ tag( stringa richiesta ) Nome dell'azione dove viene agganciato $ function_to_add
$ function_to_add ( richiesto chiamabile ) Nome della funzione che si desidera chiamare.
$ priorità( int opzionale ) Luogo della chiamata di funzione in tutte le funzioni di azione (default = 10)
$ accepted_args ( int opzionale ) Numero di parametri accettati dalla funzione (default = 1)
$ WIDGET_ID ( stringa richiesta ) Slug univoco per il tuo widget
$ WIDGET_NAME
( stringa richiesta ) Nome del widget (visualizzato nella testa)
$ callback( richiamabile richiesto ) Nome della funzione che visualizza il contenuto del widget
$ control_callback( richiamabile facoltativo ) Nome della funzione che gestisce i moduli delle opzioni del widget
$ callback_args ( array opzionale ) Parametri della funzione $ control_callback
Examples
Widget semplice (visualizza testo)
https://riptutorial.com/it/home 21
Questo aggiungerà un semplice widget che mostra solo un piccolo messaggio.
add_action('wp_dashboard_setup', 'register_my_dashboard_widgets'); function register_my_dashboard_widgets() { wp_add_dashboard_widget('myInfo_widget', 'Important Information', 'display_infoWidget'); } function display_infoWidget() { echo '<p>At the first of february this site gets a new design. Therefore is wont be available this day. To see the current progress you can visit <a href="http://www.justanexample.com" >this site</a></p>'; }
Leggi Admin Dashboard Widgets online: https://riptutorial.com/it/wordpress/topic/9571/admin-dashboard-widgets
https://riptutorial.com/it/home 22
Capitolo 8: Aggiorna WordPress manualmente
Examples
VIA FTP
Scarica la versione desiderata di WordPress da www.wordpress.org sul tuo computer locale e decomprimi il file.
Conserva anche un backup della versione corrente ... per ogni evenienza.•
1.
Collegati al tuo sito Web con il tuo client FTP preferito (FileZilla è popolare e facile, ma qualsiasi client FTP andrà bene).
Le istruzioni per questo sono al di fuori dello scopo di WordPress, ma possono essere trovate in una data futura nell'argomento FTP proposto .
•
2.
Carica le cartelle (e il loro contenuto) intitolate "wp-admin" e "wp-includes" alle rispettive directory sul tuo server. Assicurati di sovrascrivere le cartelle correnti.
È possibile omettere il caricamento della cartella "wp-content" a meno che non si scelga di utilizzare uno dei temi inclusi. Se desideri aggiornare / caricare i temi predefiniti inclusi nella versione scelta, devi caricare anche questa cartella.
•
3.
Carica i singoli file nella cartella home (index.php, wp - *. Php, ecc.).
È possibile omettere i file "liscense.txt" e "readme.html" in quanto non sono necessari per funzionare e possono essere utilizzati come metodi per determinare la versione WP per gli exploit di sicurezza.
•
4.
Visita e accedi al tuo sito Web per poter eseguire gli aggiornamenti del database richiesti.
Non tutti gli aggiornamenti WP hanno modifiche DB, ma alcuni lo fanno.•
5.
Nota : questo metodo creerà file orfani che possono / si accumuleranno nel tempo e potrebbero presentare rischi per la sicurezza. Assicurati di fare un confronto tra i file dopo il completamento ed elimina i vecchi file dal tuo server dalle versioni precedenti di WP che non sono più in uso.
Leggi Aggiorna WordPress manualmente online: https://riptutorial.com/it/wordpress/topic/8663/aggiorna-wordpress-manualmente
https://riptutorial.com/it/home 23
Capitolo 9: Aggiungi / rimuovi le informazioni di contatto per gli utenti con hook del filtro user_contactmethods
Examples
Abilitare i social network più popolari
function social_profiles( $contactmethods ) { $contactmethods['facebook_profile'] = 'Facebook Profile URL'; $contactmethods['twitter_profile'] = 'Twitter Profile URL'; $contactmethods['google_profile'] = 'Google Profile URL'; $contactmethods['linkedin_profile'] = 'Linkedin Profile URL'; $contactmethods['github_profile'] = 'GitHub Profile URL'; $contactmethods['behance_profile'] = 'Behance Profile URL'; $contactmethods['dribbble_profile'] = 'Dribbble Profile URL'; $contactmethods['stack_profile'] = 'Stack Exchange Profile URL'; $contactmethods['twitch_profile'] = 'Twitch Profile URL'; $contactmethods['angellist_profile'] = 'AngelList Profile URL'; return $contactmethods; } add_filter( 'user_contactmethods', 'social_profiles', 10, 1);
Otterrai questo file nella tua dashboard:
https://riptutorial.com/it/home 24
E questo è come lo si recupera in codice
<?php $user_stack_exchange = get_the_author_meta( 'stack_profile' ); ?>
Rimozione del metodo di contatto
function remove_contact_methods( $contactmethods ) { unset($contactmethods['facebook_profile']); unset($contactmethods['twitter_profile']); return $contactmethods; } add_filter( 'user_contactmethods', 'remove_contact_methods', 10, 1);
Leggi Aggiungi / rimuovi le informazioni di contatto per gli utenti con hook del filtro user_contactmethods online: https://riptutorial.com/it/wordpress/topic/2694/aggiungi---rimuovi-le-informazioni-di-contatto-per-gli-utenti-con-hook-del-filtro-user-contactmethods
https://riptutorial.com/it/home 25
Capitolo 10: Aggiungi Shortcode
Sintassi
add_shortcode( $tag , $func );•
Parametri
Parametro Dettagli
$ tag (stringa) (obbligatorio) Tag shortcode da cercare nel contenuto del post
$ func (callable) (richiesto) Hook da eseguire quando viene trovato shortcode
Osservazioni
Il callback shortcode avrà tre argomenti: gli attributi shortcode, il contenuto shortcode (se presente) e il nome dello shortcode.
•
Ci può essere un solo gancio per ogni shortcode. Il che significa che se un altro plugin ha uno shortcode simile, sostituirà il tuo o il tuo, sovrascriverlo a seconda dell'ordine in cui i plug-in sono inclusi e / o eseguiti.
•
I nomi degli attributi Shortcode vengono sempre convertiti in caratteri minuscoli prima di essere passati alla funzione del gestore. I valori sono intatti.
•
Si noti che la funzione chiamata dallo shortcode non dovrebbe mai produrre output di alcun tipo. Le funzioni Shortcode devono restituire il testo che deve essere utilizzato per sostituire lo shortcode. Produrre direttamente l'output porterà a risultati inaspettati. Questo è simile al modo in cui le funzioni del filtro dovrebbero comportarsi, in quanto non dovrebbero produrre effetti collaterali attesi dalla chiamata, dal momento che non è possibile controllare quando e da dove vengono chiamati.
•
Examples
Shortcode semplice per post recenti
add_shortcode è la parola chiave wp.
// recent-posts is going to be our shortcode. add_shortcode('recent-posts', 'recent_posts_function'); // This function is taking action when recent post shortcode is called. function recent_posts_function() { query_posts(array('orderby' => 'date', 'order' => 'DESC' , 'showposts' => 1)); if (have_posts()) : while (have_posts()) : the_post(); $return_string = '<a href="'.get_permalink().'">'.get_the_title().'</a>';
https://riptutorial.com/it/home 26
endwhile; endif; wp_reset_query(); return $return_string; }
Questo frammento può essere inserito nel tuo theme functions.php .
[recent-posts] Questo è uno shortcode per i post recenti. Possiamo applicare questo shortcode nel backend (come pagine, post, widget).
Possiamo anche usare lo stesso shortcode nel nostro codice. con l'aiuto di do_shortcode . Per esempio. echo do_shortcode( '[recent-posts]' );
Shortcode avanzato per i post recenti
Questa funzione accetta i parametri per il numero di post recenti che desideri visualizzare.
Es: vuoi mostrare solo cinque post recenti. Ho appena passato gli argomenti con posts = "5" (puoi passare qualsiasi numero di post recenti che vuoi visualizzare).
La funzione recupera solo cinque post recenti dal database.
// recent-posts is going to be our shortcode. add_shortcode('recent-posts', 'recent_posts_function'); // Functions takes parameter such as posts="5". function recent_posts_function($atts){ extract(shortcode_atts(array( 'posts' => 1, ), $atts)); $return_string = '<ul>'; query_posts(array('orderby' => 'date', 'order' => 'DESC' , 'showposts' => $posts)); if (have_posts()) : while (have_posts()) : the_post(); $return_string .= '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>'; endwhile; endif; $return_string .= '</ul>'; wp_reset_query(); return $return_string; }
Per esempio. echo do_shortcode( '[recent-posts posts="5"]' );
Leggi Aggiungi Shortcode online: https://riptutorial.com/it/wordpress/topic/6580/aggiungi-shortcode
https://riptutorial.com/it/home 27
Capitolo 11: AJAX
Examples
Richiesta AJAX con una risposta JSON
functions.php:
// We add the action twice, once for logged in users and once for non logged in users. add_action( 'wp_ajax_my_action', 'my_action_callback' ); add_action( 'wp_ajax_nopriv_my_action', 'my_action_callback' ); // Enqueue the script on the front end. add_action( 'wp_enqueue_scripts', 'enqueue_my_action_script' ); // Enqueue the script on the back end (wp-admin) add_action( 'admin_enqueue_scripts', 'enqueue_my_action_script' ); function my_action_callback() { $json = array(); if ( isset( $_REQUEST['field2'] ) ) { $json['message'] = 'Success!'; wp_send_json_success( $json ); } else { $json['message'] = 'Field 2 was not set!'; wp_send_json_error( $json ); } } function enqueue_my_action_script() { wp_enqueue_script( 'my-action-script', 'path/to/my-action-script.js', array( 'jquery' ), null, true ); wp_localize_script( 'my-action-script', 'my_action_data', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), ) ); }
my-action-script.js:
(function( $ ) { 'use strict'; $( document ).on( 'ready', function() { var data = { action: 'my_action', field2: 'Hello World', field3: 3 }; $.getJSON( my_action_data.ajaxurl, data, function( json ) { if ( json.success ) { alert( 'yes!' ); } else { alert( json.data.message ); }
https://riptutorial.com/it/home 28
} ); } ); })( jQuery );
AJAX con .ajax () e WordPress Nonce
functions.php
//Localize the AJAX URL and Nonce add_action('wp_enqueue_scripts', 'example_localize_ajax'); function example_localize_ajax(){ wp_localize_script('jquery', 'ajax', array( 'url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('example_ajax_nonce'), )); } //Example AJAX Function add_action('wp_ajax_example_function', 'example_function'); add_action('wp_ajax_nopriv_example_function', 'example_function'); function example_function(){ if ( !wp_verify_nonce($_POST['nonce'], 'example_ajax_nonce') ){ die('Permission Denied.'); } $firstname = sanitize_text_field($_POST['data']['firstname']); $lastname = sanitize_text_field($_POST['data']['lastname']); //Do something with data here echo $firstname . ' ' . $lastname; //Echo for response wp_die(); // this is required to terminate immediately and return a proper response:- https://codex.wordpress.org/AJAX_in_Plugins }
example.js
jQuery(document).on('click touch tap', '.example-selector', function(){ jQuery.ajax({ type: "POST", url: ajax.url, data: { nonce: ajax.nonce, action: 'example_function', data: { firstname: 'John', lastname: 'Doe' }, }, success: function(response){ //Success }, error: function(XMLHttpRequest, textStatus, errorThrown){ //Error }, timeout: 60000 });
https://riptutorial.com/it/home 29
return false; });
wp_ajax - funzionalità di base + controllo _wpnonce
functions.php :
function rm_init_js() { wp_enqueue_script( 'custom-ajax-script', get_template_directory_uri() . '/js/ajax.js', array( 'jquery', 'wp-util' ), '1.0', true ); // pass custom variables to JS wp_localize_script( 'custom-ajax-script', 'BEJS', array( 'action' => 'custom_action', 'nonce' => wp_create_nonce( 'test-nonce' ) ) ); } add_action( 'wp_enqueue_scripts', 'rm_init_js' ); function rm_ajax_handler() { check_ajax_referer( 'test-nonce' ); extract( $_POST ); $data = compact( 'first_name', 'last_name', 'email' ); foreach ( $data as $name => $value ) { switch ( $name ) { case 'first_name': case 'last_name': $data[ $name ] = ucfirst( sanitize_user( $value ) ); break; case 'email': $data[ $name ] = sanitize_email( $value ); break; } } $userID = email_exists( $data['email'] ); if ( ! $userID ) { wp_send_json_error( sprintf( __( 'Something went wrong! %s try again!', 'textdomain' ), $data['first_name'] . ' ' . $data['last_name'] ) ); } wp_update_user( array( 'ID' => $userID, 'display_name' => $data['first_name'] . ' ' . $data['last_name'], 'first_name' => $data['first_name'], 'last_name' => $data['last_name'], ) ); wp_send_json_success( sprintf( __( 'Welcome Back %s', 'textdomain' ), $data['first_name'] . ' ' . $data['last_name'] ) ); } add_action( 'wp_ajax_custom_action', 'rm_ajax_handler' ); add_action( 'wp_ajax_nopriv_custom_action', 'rm_ajax_handler' );
https://riptutorial.com/it/home 30
ajax.js
;(function() { wp.ajax.post(BEJS.action, { first_name: 'john', last_name: '%65doe', email: '[email protected]', _ajax_nonce: BEJS.nonce }).done( function( response ) { alert(`Success: ${response}`); }).fail( function( response ) { alert(`Error: ${response}`); }); })();
Invio di ajax OOP utilizzando una classe semplice con nonce
Puoi copiare e incollare l'intero plugin per provarlo. Lo scheletro di classe è usato da qui .
class-oop-ajax.cpp
<?php /** * The plugin bootstrap file * * This file is read by WordPress to generate the plugin information in the plugin * Dashboard. This file defines a function that starts the plugin. * * @wordpress-plugin * Plugin Name: Oop Ajax * Plugin URI: http:// * Description: A simple example of using OOP principles to submit a form from the front end. * Version: 1.0.0 * Author: Digvijay Naruka * Author URI: http:// * License: GPL-2.0+ * License URI: http://www.gnu.org/licenses/gpl-2.0.txt * Text Domain: oop-ajax * Domain Path: /languages */ // If this file is called directly, abort. if ( ! defined( 'WPINC' ) ) { die; } class Oop_Ajax { // Put all your add_action, add_shortcode, add_filter functions in __construct() // For the callback name, use this: array($this,'<function name>') // <function name> is the name of the function within this class, so need not be globally
https://riptutorial.com/it/home 31
unique // Some sample commonly used functions are included below public function __construct() { // Add Javascript and CSS for front-end display add_action('wp_enqueue_scripts', array($this,'enqueue')); // Add the shortcode for front-end form display add_action( 'init', array( $this, 'add_form_shortcode' ) ); // Add ajax function that will receive the call back for logged in users add_action( 'wp_ajax_my_action', array( $this, 'my_action_callback') ); // Add ajax function that will receive the call back for guest or not logged in users add_action( 'wp_ajax_nopriv_my_action', array( $this, 'my_action_callback') ); } // This is an example of enqueuing a JavaScript file and a CSS file for use on the front end display public function enqueue() { // Actual enqueues, note the files are in the js and css folders // For scripts, make sure you are including the relevant dependencies (jquery in this case) wp_enqueue_script('my-ajax-script', plugins_url('js/oop-ajax.js', __FILE__), array('jquery'), '1.0', true); // Sometimes you want to have access to data on the front end in your Javascript file // Getting that requires this call. Always go ahead and include ajaxurl. Any other variables, // add to the array. // Then in the Javascript file, you can refer to it like this: my_php_variables.ajaxurl wp_localize_script( 'my-ajax-script', 'my_php_variables', array( 'ajaxurl' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('_wpnonce') )); } /** * Registers the shortcode for the form. */ public function add_form_shortcode() { add_shortcode( "oop-ajax-add-form", array( $this, "add_form_front_end" ) ); } /** * Processes shortcode oop-ajax-add-form * * @param array $atts The attributes from the shortcode * * @return mixed $output Output of the buffer */ function add_form_front_end($atts, $content) { echo "<form id='my_form'>"; echo "<label for='name'>Name: </label>"; echo "<input id='name' type='text' name='name' ";
https://riptutorial.com/it/home 32
echo "<br>" ; echo "<label id='email' for='email'>Email: </label>" ; echo "<input type='text' name='email'>"; echo "<br>" ; echo "<input type='hidden' name='action' value='my_action' >" ; echo "<input id='submit_btn' type='submit' name='submit' value='submit'> "; echo "</form><br><br>"; echo "<div id='response'>ajax responce will be here</div> "; } /** * Callback function for the my_action used in the form. * * Processses the data recieved from the form, and you can do whatever you want with it. * * @return echo response string about the completion of the ajax call. */ function my_action_callback() { // echo wp_die('<pre>' . print_r($_REQUEST) . "<pre>"); check_ajax_referer( '_wpnonce', 'security'); if( ! empty( $_POST )){ if ( isset( $_POST['name'] ) ) { $name = sanitize_text_field( $_POST['name'] ) ; } if( isset( $_POST['email'] ) ) { $email = sanitize_text_field( $_POST['email'] ) ; } /////////////////////////////////////////// // do stuff with values // example : validate and save in database // process and output /////////////////////////////////////////// $response = "Wow <strong style= 'color:red'>". $name . "!</style></strong> you rock, you just made ajax work with oop."; //this will send data back to the js function: echo $response; } else { echo "Uh oh! It seems I didn't eat today"; } wp_die(); // required to terminate the call so, otherwise wordpress initiates the termination and outputs weird '0' at the end. } } //initialize our plugin
https://riptutorial.com/it/home 33
global $plugin; // Create an instance of our class to kick off the whole thing $plugin = new Oop_Ajax();
OOP-ajax.js
Metti il file js all'interno della directory js, ovvero oop-ajax / js / oop-ajax.js
(function($) { 'use strict'; $("#submit_btn").on('click', function() { // set the data var data = { action: 'my_action', security: my_php_variables.nonce, name: $("#name").val(), email: $("#email").val() } $.ajax({ type: 'post', url: my_php_variables.ajaxurl, data: data, success: function(response) { //output the response on success $("#response").html(response); }, error: function(err) { console.log(err); } }); return false; }); })(jQuery);
Leggi AJAX online: https://riptutorial.com/it/wordpress/topic/2335/ajax
https://riptutorial.com/it/home 34
Capitolo 12: API REST
introduzione
L'API REST di WordPress fornisce endpoint API per i tipi di dati di WordPress che consentono agli sviluppatori di interagire con i siti in remoto inviando e ricevendo oggetti JSON (JavaScript Object Notation).
Quando si invia il contenuto o si effettua una richiesta all'API, la risposta verrà restituita in JSON. Ciò consente agli sviluppatori di creare, leggere e aggiornare contenuti di WordPress da JavaScript lato client o da applicazioni esterne, anche quelli scritti in lingue diverse da PHP.
Osservazioni
Per ottenere questo semplice esempio dell'API REST di WordPress per te, devi imparare come funziona in modo più dettagliato. La documentazione ufficiale raccomanda di conoscere:
Rotte / Endpoint - che sono mappature di singoli metodi HTTP a percorsi noti come "endpoint": lo fai usando la funzione register_rest_route () , e qui puoi trovare ulteriori informazioni su Rotte ed Endpoint .
1.
Richieste - L'API REST di WordPress definisce la classe WP_REST_Request che viene utilizzata per archiviare e recuperare informazioni per la richiesta corrente. WP_REST_Request oggetti WP_REST_Request vengono generati automaticamente quando si effettua una richiesta HTTP su una rotta registrata. I dati specificati nella richiesta determineranno la risposta che si ottiene dall'API. Qui puoi saperne di più sulla classe WP_REST_Request .
2.
Risposte - sono i dati che torni dall'API. WP_REST_Response fornisce un modo per interagire con i dati di risposta restituiti dagli endpoint. Nella definizione dell'endpoint, si chiama la funzione callback (risposta) per servire la propria interazione. Qui puoi saperne di più sulla classe WP_REST_Response .
3.
Schema: ogni endpoint richiede e fornisce strutture di dati leggermente diverse e tali strutture sono definite nello schema API. Se si desidera endpoint mantenibili, individuabili e facilmente estensibili, si consiglia di utilizzare lo schema. Qui puoi imparare di più sullo Schema .
4.
Classi di controller: riuniscono tutti gli elementi in un'unica posizione. Con una classe controller è possibile gestire la registrazione di route ed endpoint, gestire le richieste, utilizzare lo schema e generare risposte API. Hai già imparato a conoscere due classi di controller: WP_REST_Request e WP_REST_Response . Qui puoi imparare di più sulle Classi dei controller
5.
Nota: alcune di queste informazioni sono tratte dal manuale ufficiale di Wordpress REST APi
https://riptutorial.com/it/home 35
Examples
Esempio di lavoro completo
add_action('rest_api_init', 'my_rest_validate_endpoint' ); function my_rest_validate_endpoint() { // Declare our namespace $namespace = 'myrest/v1'; // Register the route // Example URL matching this route: // http://yourdomain/wp-json/myrest/v1/guides/tag=europe/price=29 register_rest_route($namespace, // Using regular expressions we can initially validate the input '/guides/tag=(?P<tag>[a-zA-Z0-9-]+)/price=(?P<price>[0-9]+)', // We can have multiple endpoints for one route array( array( 'methods' => 'GET', 'callback' => 'my_get_guides_handler' ) ), // We can register our schema callback // 'schema' => 'my_get_guide_schema', ); // You can register another route here the same way } // The callback handler for the endpoint function my_get_guides_handler(WP_REST_Request $request) { // Get the parameters: $tag = $request->get_param('tag'); $price = $request->get_param('price'); // Do something with the parameters // for instance: get matching guides from the DB into an array - $results // ... // Prepare the response $message = "We've found " . count($results) . " guides "; $message .= "(searching for a tag: " . $tag . ", with a price tag: " . $price . ")"; // The response gets automatically converted into a JSON format return new WP_REST_Response( array( 'results' => $results, 'message' => $message, 'status' => 'OK' ), 200 ); }
https://riptutorial.com/it/home 36
Leggi API REST online: https://riptutorial.com/it/wordpress/topic/10645/api-rest
https://riptutorial.com/it/home 37
Capitolo 13: Azioni e filtri
Sintassi
add_action (tag, function_to_call, priority, num_of_args);•add_filter (tag, function_to_call, priority, num_of_args);•
Parametri
Parametro Spiegazione
$ tag (stringa) (Obbligatorio) Il nome dell'azione a cui è agganciata la funzione $.
$ funzione(callable) (Obbligatorio) Richiede una stringa contenente il nome della funzione o la funzione anonima. Vedi esempi per aggiungere funzioni all'interno delle classi.
$ priorità
(int) default = 10. Le funzioni associate a ganci / filtri verranno eseguite nella priorità assegnata. Si può avere una situazione in cui si desidera lavorare con il codice prima di qualsiasi altra azione, impostare priorità = 1 o dopo tutte le altre funzioni associate priorità = 100 ecc. Come con tutte le funzioni php, è possibile utilizzare la funzione senza passare un valore per una variabile dove è stato impostato un valore predefinito, ma se si desidera modificare il numero di parametri restituiti, è necessario specificare!
$ parametri
(int) default = 1. Il numero di parametri restituiti alla funzione allegata. I parametri restituiti dipenderanno dal numero in cui è stato creato l'hook. Vedi apply_filters() e do_action() per maggiori dettagli.
Osservazioni
Ganci Wordpress
Qualcosa che spesso confonde gli sviluppatori quando si inizia a lavorare con WordPress sono l'uso di apply_filters() e add_action() . Vedrai spesso plugin / temi che fanno uso di questi in codice e se non capisci il concetto, troverai difficile lavorare con loro.
In breve (molto breve, guarda il diagramma di flusso di WordPress per il processo in dettaglio), WordPress si carica nel seguente modo:
wp-load.php - funzioni ecc1. mu-plugins - qualsiasi file trovato nella cartella mu-plugins - spesso usato per servire oggetti memorizzati nella cache
2.
Plugin: nessun ordine particolare, verranno caricati plugin installati e attivati3.
https://riptutorial.com/it/home 38
Tema figlio attivo / tema principale4. init - resto dei dati5. modello6.
Se sei uno sviluppatore e lavori con un file di funzioni, puoi vedere che entrambi sono caricati in precedenza nel processo rispetto ai file con cui stai lavorando. Ciò significa che non è possibile modificare i processi (si noti che non è possibile sovrascrivere le funzioni) o le variabili eseguite successivamente o non ancora definite. Inoltre, gli sviluppatori di temi possono inserire degli hook nel loro codice per consentire ai plugin di collegarsi o i plug-in potrebbero consentire ad altri plug-in di sovrascrivere le loro variabili. Ora questo può essere fonte di confusione finora, ma resisti lì.
Per capire add_filter() e add_action() abbiamo bisogno di vedere come vengono creati gli hook in primo luogo.
$arga= 'hello'; do_action('im_a_hook', $arga );
Quando si incontra quanto sopra in WordPress, chiamerà qualsiasi funzione collegata im_a_hook (cercare $wp_filter per informazioni sul processo). Nella tua funzione allegata $arga sarà disponibile per la funzione allegata su cui lavorare.
add_action('im_a_hook', 'attached_function'); function attached_function($arga){ echo $arga; }
Questo apre nuove e potenti opportunità per modificare le variabili in determinati punti del processo di caricamento. Ricorda che abbiamo detto prima che i modelli sono caricati dopo plugin / temi? Un plugin comune è WooCommerce che crea schermate più avanti nel processo, non ho intenzione di documentare come ma un esempio di do_action può essere trovato nel plugin.
do_action( 'woocommerce_after_add_to_cart_button' );
Qui abbiamo creato un hook che non restituisce alcuna variabile, ma possiamo ancora divertirci con esso:
add_action( 'woocommerce_after_add_to_cart_button', 'special_offer'); function special_offer(){ echo '<h1>Special Offer!</h1>; }
L' add_action sopra di cui sopra farà echo un'intestazione dell'offerta speciale in cui si trova do_action('woocommerce_after_add_to_cart_button') si trova quando si crea una schermata di WooCommerce. Quindi possiamo usare questo hook per inserire html. Altri usi potrebbero includere il reindirizzamento a uno schermo diverso del tutto, ecc.
Anche più variabili possono essere passate alla funzione. Prova questo nelle funzioni dei tuoi
https://riptutorial.com/it/home 39
temi. Nota l'ultimo parametro che stiamo impostando su 3, perché vogliamo lavorare con i 3 parametri disponibili. Se lo avessimo modificato in 2, solo 2 verrebbero restituiti e avremmo ottenuto un errore indefinito.
add_action('custom_hook', 'attached_function', 10, 3); function attached_function($a,$b,$c){ var_dump($a); var_dump($b); var_dump($c); } $arga = 1; $argb = 2; $argc = 3; do_action('custom_hook', $arga, $argb, $argc); exit;
C'è un altro tipo di hook WP chiamato un filtro. Un filtro è diverso da un'azione nel suo utilizzo, un'azione può ricevere solo variabili, ovviamente queste variabili rientrano nello scope delle funzioni (dovresti sapere quale scope php è, se non google). I filtri restituiscono i dati restituiti, quindi è possibile utilizzare per modificare le variabili.
$filter_me= apply_filters('im_a_filter', $variable_to_filter);
Dove vedi quanto sopra, puoi modificare il valore di $filter_me dato che qualsiasi dato che tu restituisci sarà il valore memorizzato nella variabile. Quindi per esempio (nota che stiamo cambiando $variable_to_filter in $filter_me nell'esempio):
add_filter('im_a_filter', 'attached_function', 100); function attached_function($filter_me){ $filter_me= 'ray'; return $filter_me; } $filter_me = 'bob'; $filter_me= apply_filters('im_a_filter', $filter_me);
La variabile $filter_me ora conterrà 'ray' piuttosto che 'bob' , abbiamo impostato una priorità di 100 quindi siamo ragionevolmente sicuri che nessuno stia cambiando il valore dopo l'uso (ci possono essere più filtri in esecuzione sullo stesso hook) Quindi ora è possibile modificare le variabili utilizzate successivamente nel processo se è presente apply_filters() .
Puoi anche passare più parametri, ma puoi solo cambiare il valore di uno. Devi anche restituire un
https://riptutorial.com/it/home 40
valore, altrimenti la tua variabile non conterrà nulla. Se capisci come usi php per assegnare valori / array / oggetti a variabili questo ti sarà ovvio, ad esempio:
add_filter('im_a_filter', 'attached_function', 100, 3); function attached_function($filter_me, $arga, $argb){ $filter_me= 'ray'.$arga.$argb; $arga= 'you fool'; return $filter_me; } $filter_me = 'bob'; $arga = ' middlename'; $argb = ' surname'; $filter_me= apply_filters('im_a_filter', $filter_me, $arga, $argb);
La variabile $filter_me ora contiene 'ray middlename surname' . Ma per quanto riguarda $arga ? Questo contiene ancora 'middlename' , cambiando un $arga in 'you fool' all'interno della nostra funzione non ha alcun effetto sul valore definito al di fuori del suo ambito (ci sono modi, google globals ecc.)
add_action ($ hook_name, $ function, $ priority, $ parameters)
add_filter ($ hook_name, $ function, $ priority, $ parameters);
Examples
add_action - init
add_action('init', 'process_post'); function process_post(){ if($_POST) var_dump($_POST); }
add_action - init - funzione anonima
add_action('init' , function(){ echo 'i did something'; });
add_action - init - all'interno dell'oggetto di classe
class sample{
https://riptutorial.com/it/home 41
public function __construct(){ add_action('init', array($this, 'samp') ); } public function samp(){ // must be public!! echo 'i did something'; } } new sample();
add_action - init - all'interno della classe statica
class sample{ public static function add_action_func(){ //note __CLASS__ will also include any namespacing add_action('init', array(__CLASS__, 'samp') ); } public static function samp(){ echo 'i did something'; } } sample::add_action_func();
Leggi Azioni e filtri online: https://riptutorial.com/it/wordpress/topic/2692/azioni-e-filtri
https://riptutorial.com/it/home 42
Capitolo 14: Ciclo principale alternato (pre_get_posts filter)
Sintassi
add_action ('pre_get_posts', 'callback_function_name');•function callback_function_name ($ query) {}•// per PHP 5.3.0 o successivo•add_action ('pre_get_posts', function ($ query) {});•
Parametri
Parametro Dettagli
$ query (WP_Query) Oggetto loop
Osservazioni
Se si utilizza PHP 5.3.0 o successivo, è possibile utilizzare chiusure ( funzioni anonime )
add_action( 'pre_get_posts', function( $query ) { if( !$query->is_main_query() || is_admin() ) return; // this code will run only if // - this query is main query // - and this is not admin screen });
Examples
Targeting di loop ancora più specifico
Diciamo che vogliamo cambiare il ciclo principale , solo per tassonomia specifica o tipo di post.
Targeting solo del ciclo principale sulla pagina di archivio del tipo di book .
add_action( 'pre_get_posts', 'my_callback_function' ); function my_callback_function( $query ) { if( !$query->is_main_query() || is_admin() ) return; if( !is_post_type_archive( 'book' ) ) return; // this code will run only if // - this query is main query // - and this is not admin screen
https://riptutorial.com/it/home 43
// - and we are on 'book' post type archive page }
Puoi anche controllare la categoria, il tag o la pagina di archivio della tassonomia personalizzata usando is_category() , is_tag() e is_tax() .
Puoi utilizzare qualsiasi tag condizionale disponibile in WordPress.
Mostra i post di una sola categoria
add_action( 'pre_get_posts', 'single_category' ); function single_category( $query ) { if( !$query->is_main_query() || is_admin() ) return; $query->set( 'cat', '1' ); return; }
I messaggi pre-get filtrano l'utilizzo di base
A volte vorresti cambiare la query principale su WordPress.
Il filtro pre_get_posts è la strada da percorrere.
Ad esempio, usando pre_get_posts puoi dire al loop principale di mostrare solo 5 post. O per mostrare i post solo da una categoria, o escludendo qualsiasi categoria ecc.
add_action( 'pre_get_posts', 'my_callback_function' ); function my_callback_function( $query ) { // here goes logic of your filter }
Come puoi vedere, stiamo passando l'oggetto query loop principale nel nostro argomento della funzione callback.
Nota importante qui: stiamo passando argomento come riferimento . Significa che non abbiamo bisogno di restituire query o impostare alcuna globalità per farlo funzionare. Poiché $query è un riferimento all'oggetto query principale, tutte le modifiche apportate al nostro oggetto si riflettono immediatamente nell'oggetto loop principale.
Escludi categoria dall'elenco di post modifica condividi
add_action( 'pre_get_posts', 'single_category_exclude' ); function single_category_exclude( $query ) { if( !$query->is_main_query() || is_admin() ) return; $query->set( 'cat', '-1' ); return;
https://riptutorial.com/it/home 44
}
Cambia posts_per_page per il ciclo principale
Tutto ciò che dobbiamo fare è usare il metodo set() dell'oggetto $query .
Ci vogliono due argomenti, prima quello che vogliamo impostare e in secondo luogo quale valore impostare.
add_action( 'pre_get_posts', 'change_posts_per_page' ); function change_posts_per_page( $query ) { if( !$query->is_main_query() || is_admin() ) return; $query->set( 'posts_per_page', 5 ); return; }
Targeting del solo ciclo principale di WordPress
WordPress sta applicando il filtro pre_get_posts letteralmente a qualsiasi loop generato. Significa che tutti i cambiamenti che stiamo apportando nella nostra funzione di callback sono applicati a tutti i loop in uscita.
Ovviamente non è quello che vogliamo nella maggior parte degli scenari.
Nella maggior parte dei casi vorremmo scegliere come target solo il ciclo principale e solo per gli schermi non di amministrazione.
Possiamo usare is_main_query() metodo e is_admin() funzione globale per controllare se siamo nel posto giusto.
add_action( 'pre_get_posts', 'my_callback_function' ); function my_callback_function( $query ) { if( !$query->is_main_query() || is_admin() ) return; // this code will run only if // - this query is main query // - and this is not admin screen }
Leggi Ciclo principale alternato (pre_get_posts filter) online: https://riptutorial.com/it/wordpress/topic/4418/ciclo-principale-alternato--pre-get-posts-filter-
https://riptutorial.com/it/home 45
Capitolo 15: Ciclo WP_Query ()
introduzione
WP_Query per richiedere post, pagine e tipi di post personalizzati. Otterrai un elenco per post e pagine specifiche o tipi di post personalizzati. WP_Query ti consente di estrarre messaggi dal database in base ai tuoi criteri.
Examples
Recupera gli ultimi 10 post
$args = array( 'post_type'=>'post', 'posts_per_page' =>'10' ); $latest_posts_query = new WP_Query( $args ); if($latest_posts_query->have_posts()) : while ( $latest_posts_query-> have_posts()) : $latest_posts_query->the_post(); //Get post details here endwhile; endif;
Leggi Ciclo WP_Query () online: https://riptutorial.com/it/wordpress/topic/8301/ciclo-wp-query---
https://riptutorial.com/it/home 46
Capitolo 16: Codice corto
Examples
Registrazione di shortcode
Shortcode è una piccola porzione di codice che può essere aggiunta all'editor di WordPress e produrrà qualcosa di diverso una volta che la pagina è stata pubblicata o visualizzata in anteprima.
Spesso, gli shortcode vengono aggiunti al file functions.php del tema, ma non è una buona pratica visto che gli shortcode dovrebbero continuare a funzionare dopo aver cambiato i temi. Invece, scrivi un plugin per aggiungere questa funzionalità.
La struttura per la registrazione di shortcode è:
function new_shortcode($atts, $content = null){ // if parameters are needed in the shortcode // parameters can be set to default to something extract( shortcode_atts( array( 'param_one' => 'h1' ), $atts ) ); $shortcode = '<'.$param_one'>'.$content.'</'.$param_one.'>'; return $shortcode; } // this is what registers the shortcode with wordpress add_shortcode('demo-shortcode','new_shortcode');
All'interno dell'editor di WordPress puoi digitare:
[demo-shortcode param_one="h2"]Demo[/demo-shortcode] // you don't need to insert param_one into the editor if it has a default value. // having it in the editor will override the default
Una volta pubblicata la pagina, questa si trasformerà in
<h2>Demo</h2>
Utilizzo di Shortcode nel backend di WordPress
[footag foo="value of 1" attribute-2="value of 2"]
Nell'amministratore di wordpress utilizziamo i codici di accesso predefiniti scrivendo il nome di shortcode all'interno di parentesi quadre e facoltativamente aggiungendo attributi ad esso che si separano in base allo spazio.
Aggiunta di nuovi codici brevi
https://riptutorial.com/it/home 47
function footag_func( $atts ) { return "foo = {$atts['foo']}"; } add_shortcode( 'footag', 'footag_func' );
Nei plugin possiamo aggiungere shortcode usando la funzione add_shortcode.
Lo shortcode può essere utilizzato in qualsiasi pagina o post di Wordpress semplicemente racchiudendolo tra parentesi quadre.
[footag]
Utilizzo di Shortcode all'interno del codice PHP (temi e plugin)
<?php echo do_shortcode("[footag foo='Hi! I am a foo output']"); ?>
Per stampare uno shortcode usando php usa la funzione do_shortcode ed echo il valore restituito.
Utilizzo di Shortcode in Widget
add_filter( 'widget_text', 'shortcode_unautop' ); add_filter( 'widget_text', 'do_shortcode' );enter code here
Aggiungi questo a un plug-in o al file functions.php per abilitare gli shortcode nei widget. Il codice interrompe per primo WordPress trasformando le interruzioni di riga in tag di paragrafo e quindi consente agli shortcode di analizzare i widget. L'ordine delle due linee è importante.
Leggi Codice corto online: https://riptutorial.com/it/wordpress/topic/4952/codice-corto
https://riptutorial.com/it/home 48
Capitolo 17: Come posso integrare Markdown editor con Add-on del ripetitore Advance Custom Field.
Examples
Aggiungi MarkDown Editor
Ho trovato la soluzione. Si prega di prendere in considerazione le seguenti fasi di menzione
Installa il plugin wp Markdown Editor .
Quindi installare " acf-wp-wysiwyg " per il campo del ripetitore. Ora devi aggiornare in alcuni file. Apri questo file e vai al numero di riga "180" o vai alla funzione "create_field" aggiungi
echo '<script> var simplemde = new SimpleMDE({element: document.getElementById("'.$id.'")});jQuery(".quicktags-toolbar").css("display","none");</script>';
Ora sotto il plugin "acf-repeater" apri il file "input.js", il numero di riga "142"
sostituire
new_field_html = this.$el.find('> table > tbody > tr.row-clone').html().replace(/(=["]*[\w-\[\]]*?)(acfcloneindex)/g, '$1' + new_id),
Con
new_field_html = this.$el.find('> table > tbody > tr.row-clone').html().replace(/(["]*[\w-\[\]]*?)(acfcloneindex)/g, '$1' + new_id),
Leggi Come posso integrare Markdown editor con Add-on del ripetitore Advance Custom Field. online: https://riptutorial.com/it/wordpress/topic/6602/come-posso-integrare-markdown-editor-con-add-on-del-ripetitore-advance-custom-field-
https://riptutorial.com/it/home 49
Capitolo 18: Crea un modello per il tipo di messaggio personalizzato
Examples
Creazione di un modello personalizzato per il libro di tipo Post personalizzato
Per creare un modello per i singoli post del nostro tipo di post personalizzato, dobbiamo creare un file chiamato single- post_type_name .php dove post_type_name è il nome del nostro tipo di post personalizzato.
Ad esempio, se il nostro tipo di post personalizzato è chiamato "Libri", dobbiamo creare un file PHP chiamato single- book .php. Si noti che abbiamo utilizzato il nome singolare del nostro tipo di post personalizzato.
Copia il contenuto di single.php dalla cartella dei temi e incollalo nel nuovo modello e salvalo, quindi il modello verrà applicato per la singola pagina del tipo di post personalizzato.
Modelli di tipo di messaggio personalizzato
Archivio tipo di post personalizzato:
Per creare un modello di archivio per un tipo di post personalizzato devi impostare l'argomento has_archive uguale a true nella tua funzione register_post_type() . Nell'esempio seguente viene creato un tipo di post personalizzato per un tipo di messaggio Event.
add_action( 'init', 'create_events_post_type' ); function create_events_post_type() { register_post_type( 'event', array( 'labels' => array( 'name' => __( 'Events' ), 'singular_name' => __( 'Event' ) ), 'public' => true, 'has_archive' => true, ) ); }
Per creare un modello per i nuovi tipi di post personalizzati dovrai creare un nuovo file modello. Per creare un modello per le singole pagine del post, dovresti nominarlo single-{post_type}.php e archive-{post_type}.php per l'archivio.
Il nome del file per il nostro modello di archivio sarà archive-event.php e per la pagina dell'evento
https://riptutorial.com/it/home 50
sarebbe single-event.php . Entrambi i file dovrebbero trovarsi nella directory principale dei temi.
Un esempio di modello di archivio sarebbe simile a questo. Tirato dal tema di ventidue anni .
<?php /** * The template for displaying archive pages * * @link https://codex.wordpress.org/Template_Hierarchy * * @package WordPress * @subpackage Twenty_Seventeen * @since 1.0 * @version 1.0 */ get_header(); ?> <div class="wrap"> <?php if ( have_posts() ) : ?> <header class="page-header"> <?php the_archive_title( '<h1 class="page-title">', '</h1>' ); the_archive_description( '<div class="taxonomy-description">', '</div>' ); ?> </header><!-- .page-header --> <?php endif; ?> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php if ( have_posts() ) : ?> <?php /* Start the Loop */ while ( have_posts() ) : the_post(); /* * Include the Post-Format-specific template for the content. * If you want to override this in a child theme, then include a file * called content-___.php (where ___ is the Post Format name) and that will be used instead. */ get_template_part( 'template-parts/post/content', get_post_format() ); endwhile; the_posts_pagination( array( 'prev_text' => twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '<span class="screen-reader-text">' . __( 'Previous page', 'twentyseventeen' ) . '</span>', 'next_text' => '<span class="screen-reader-text">' . __( 'Next page', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ), 'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyseventeen' ) . ' </span>', ) ); else : get_template_part( 'template-parts/post/content', 'none' );
https://riptutorial.com/it/home 51
endif; ?> </main><!-- #main --> </div><!-- #primary --> <?php get_sidebar(); ?> </div><!-- .wrap --> <?php get_footer();
Modello singolo post personalizzato:
Ecco un esempio di un singolo modello. Tirato dal tema di ventidue anni .
<?php /** * The template for displaying all single posts * * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post * * @package WordPress * @subpackage Twenty_Seventeen * @since 1.0 * @version 1.0 */ get_header(); ?> <div class="wrap"> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php /* Start the Loop */ while ( have_posts() ) : the_post(); get_template_part( 'template-parts/post/content', get_post_format() ); // If comments are open or we have at least one comment, load up the comment template. if ( comments_open() || get_comments_number() ) : comments_template(); endif; the_post_navigation( array( 'prev_text' => '<span class="screen-reader-text">' . __( 'Previous Post', 'twentyseventeen' ) . '</span><span aria-hidden="true" class="nav-subtitle">' . __( 'Previous', 'twentyseventeen' ) . '</span> <span class="nav-title"><span class="nav-title-icon-wrapper">' . twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '</span>%title</span>', 'next_text' => '<span class="screen-reader-text">' . __( 'Next Post', 'twentyseventeen' ) . '</span><span aria-hidden="true" class="nav-subtitle">' . __( 'Next', 'twentyseventeen' ) . '</span> <span class="nav-title">%title<span class="nav-title-icon-wrapper">' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ) . '</span></span>', ) ); endwhile; // End of the loop.
https://riptutorial.com/it/home 52
?> </main><!-- #main --> </div><!-- #primary --> <?php get_sidebar(); ?> </div><!-- .wrap --> <?php get_footer();
Entrambi gli esempi di template stanno tirando in partial per visualizzare il contenuto interno.
Se il tuo tema figlio / genitore ha un modello singolo / di archivio, dovresti usare quel codice come boilerplate per i tuoi nuovi modelli.
Leggi Crea un modello per il tipo di messaggio personalizzato online: https://riptutorial.com/it/wordpress/topic/6390/crea-un-modello-per-il-tipo-di-messaggio-personalizzato
https://riptutorial.com/it/home 53
Capitolo 19: Crea un post programmaticamente
Sintassi
wp_insert_post (array $ args, bool $ wp_error);•
Parametri
Parametro Descrizione
$ args (array richiesto) Una matrice di valori chiave degli elementi sottostanti.
$ wp_error (Boolean Opzionale) Restituisce un WP_Error in caso di errore.
Osservazioni
argomenti
La tabella successiva mostra un elenco di elementi che è possibile utilizzare all'interno del primo parametro (matrice).
Parametro Descrizione
ID(Int) L'ID del post. Se uguale a qualcosa diverso da 0, il post con quell'ID verrà aggiornato. Predefinito 0.
post_author(Int) L'ID dell'utente che ha aggiunto il post. L'impostazione predefinita è l'ID utente corrente.
data di pubblicazione(Stringa) La data del post. L'impostazione predefinita è l'ora corrente.
post_date_gmt(Stringa) La data del post nel fuso orario GMT. L'impostazione predefinita è il valore di $ post_date.
POST_CONTENT (Misto) Il contenuto del post. Predefinito vuoto.
post_content_filtered(String) Il contenuto del messaggio filtrato. Predefinito vuoto.
titolo del post (String) Il titolo del post. Predefinito vuoto.
https://riptutorial.com/it/home 54
Parametro Descrizione
post_category (Array) Matrice di valori di categoria post.
post_excerpt (String) L'estratto del post. Predefinito vuoto.
post_status (String) Lo stato del post. Bozza predefinita.
post_type (String) Il tipo di post. Post predefinito
comment_status(Stringa) Se il post può accettare commenti. Accetta aperto o chiuso. L'impostazione predefinita è il valore dell'opzione default_comment_status.
ping_status(Stringa) Se il post può accettare ping. Accetta aperto o chiuso. L'impostazione predefinita è il valore dell'opzione default_ping_status.
post_password(String) La password per accedere al post. Predefinito vuoto.
POST_NAME(String) Il nome del post o slug. L'impostazione predefinita è il titolo del messaggio sterilizzato durante la creazione di un nuovo post.
to_ping(String) Elenco separato da URL di ritorno spazio o carrello per eseguire il ping. Predefinito vuoto.
il ping(Stringa) Elenco di URL separati dal ritorno di spazi o carrelli che sono stati sottoposti a ping. Predefinito vuoto.
post_modified(String) La data in cui il post è stato modificato l'ultima volta. L'impostazione predefinita è l'ora corrente.
post_modified_gmt(String) La data in cui il post è stato modificato l'ultima volta nel fuso orario GMT. L'impostazione predefinita è l'ora corrente.
post_parent(Int) Imposta questo per il post a cui appartiene, se presente. Predefinito 0.
menu_order(Int) L'ordine in cui dovrebbe essere visualizzato il post. Predefinito 0.
post_mime_type (String) Il tipo mime del post. Predefinito vuoto.
guid(String) ID univoco globale per referenziare il post. Predefinito vuoto.
https://riptutorial.com/it/home 55
Parametro Descrizione
tax_input(Matrice) Matrice di termini di tassonomia, in base al nome della tassonomia. Predefinito vuoto.
meta_input(Array) Matrice di meta-metriche dopo la loro chiave meta post. Predefinito vuoto.
Evita i messaggi duplicati
Quando esegui questa funzione, potresti probabilmente ottenere un post duplicato, almeno quello che è successo a me. (Puoi verificarlo nella sezione Post WordPress)
Ho trovato una soluzione :
if( !get_page_by_title( $title, 'OBJECT', 'post' ) ){ $my_post = array('post_title' => $title, 'post_content' => 'Content', 'tags_input' => $tags, 'post_category' => array(2), 'post_status' => 'publish' ); $result = wp_insert_post( $my_post ); }
Spiegazione
Prima di salvare un nuovo post, verifica se il nuovo post esiste già usando il titolo del post come parametro, se non c'è un titolo del post, puoi salvare il tuo nuovo post.
Controllare la documentazione del get_page_by_title qui .
Examples
introduzione
A volte abbiamo un altro editor da qualche altra parte invece di TinyMCE (Wordpress Default Editor). Succede quando stiamo creando il nostro tema, plugin o qualcosa di specifico; e abbiamo bisogno di scrivere e manipolare un tipo di post e salvarlo nel nostro database WP.
Quindi, se ti trovi in quella situazione, puoi usare una funzione di Wordpress chiamata:
wp_insert_post( array $args, bool $wp_error );
Crea un post di base
https://riptutorial.com/it/home 56
$basic_post_args = array( 'post_title' => 'My Basic Post', 'post_content' => 'This is a basic content', 'post_status' => 'publish', 'post_author' => 1, 'post_category' => array(8, 59) ); wp_insert_post( $basic_post_args );
Crea una pagina di base
$basic_page_args = array( 'post_title' => 'My Basic Page', 'post_content' => 'This is a basic content', 'post_type' => 'page', 'post_status' => 'publish', 'post_author' => 1 ); wp_insert_post( $basic_page_args );
Leggi Crea un post programmaticamente online: https://riptutorial.com/it/wordpress/topic/5860/crea-un-post-programmaticamente
https://riptutorial.com/it/home 57
Capitolo 20: Creare un modello personalizzato
Examples
Creazione di un modello vuoto di base
Per creare un modello personalizzato, è necessario prima creare un file php in una directory di temi. Puoi chiamarlo praticamente come preferisci. Per questo esempio creeremo example.php
Una sola cosa che dobbiamo definire all'interno del nostro esempio.php, per essere riconosciuta da WordPress come modello, è il nome del modello. Facciamo questo acquisto mettendo un commento speciale nella parte superiore di un file, come questo:
<?php /* Template Name: Example */ ?>
E ora quando dovremmo vedere il nostro modello elencato nel menu a discesa Template nella pagina Attributi
https://riptutorial.com/it/home 58
Compreso l'intestazione e il piè di pagina nel nostro modello
Estendiamo il nostro modello dall'alto e includiamo il contenuto di header.php e footer.php
Compreso intestazione:
Includeremo l'intestazione subito dopo il commento al nome del modello
Ci sono due modi comuni per farlo. Entrambi sono giusti e funzionano allo stesso modo, si tratta solo del tuo stile e di come appare il codice
Primo modo:
<?php /* Template Name: Example */ get_header(); ?>
Secondo modo:
https://riptutorial.com/it/home 59
<?php /* Template Name: Example */ ?> <?php get_header(); ?>
Compreso il piè di pagina:
Includere il piè di pagina funziona allo stesso modo, c'è solo una cosa di cui dobbiamo preoccuparci, ed è che includiamo il piè di pagina dopo che abbiamo incluso l'intestazione. Quindi il modello finale dovrebbe assomigliare a questo.
<?php /* Template Name: Example */ get_header(); ?> <?php get_footer(); ?>
Modello personalizzato con contenuto
Estenderemo ulteriormente il nostro modello e includeremo il titolo della pagina e un contenuto
<?php /* Template Name: Example */ get_header(); the_title(); the_content(); get_footer();
E se vuoi, puoi avvolgerli con elementi HTML come questo
<?php /* Template Name: Example */ get_header(); echo '<h1>' . the_title() . '</h1>'; echo '<section> . 'the_content() . '</section>'; get_footer();
O se preferisci lavorare come un normale file HTML, senza usare echo
<?php /*
https://riptutorial.com/it/home 60
Template Name: Example */ get_header(); ?> <h1><?php the_title(); ?></h1> <section><?php the_content(); ?></section> <?php get_footer(); ?>
Leggi Creare un modello personalizzato online: https://riptutorial.com/it/wordpress/topic/2791/creare-un-modello-personalizzato
https://riptutorial.com/it/home 61
Capitolo 21: Creazione di plugin WordPress
introduzione
I plug-in di WordPress dovrebbero concentrarsi sulla logica del server e / o sulle parti di amministrazione della tua applicazione web. I buoni plugin sono come buone app, fanno una cosa veramente bene. Servono per migliorare e automatizzare parti del CMS in modo modulare, poiché è possibile attivarle e disattivarle. I buoni plug-in si avvalgono delle azioni principali di WordPress, dei filtri e dei framework javascript e css esistenti.
Examples
Setup minimo di una cartella e file di plugin
Il primo passo per creare un plug-in è creare la cartella e il file da cui verrà caricato il plugin.
I plugin si trovano in /wp-content/plugins/ .
Lo standard di WordPress è quello di creare una cartella e un nome di file che si rispecchiano a vicenda in questo modo:
/wp-content/plugins/myplugin/ /wp-content/plugins/myplugin/myplugin.php
Dopo aver creato il tuo file plugin devi avviare il tuo plugin con Plugin Header . Ciò consente a WordPress di eseguire la scansione del file del plug-in e memorizzare i metadati sul plug-in e consentire agli utenti di utilizzarlo e determinare se desiderano attivare o disattivare il plug-in. Copia questo modello nella parte superiore del file del plug-in principale che hai creato e modificalo se necessario:
<?php /** * Plugin Name: PLUGIN-NAME * Plugin URI: HTTP-LINK-TO-WEBSITE-PLUGIN-PAGE-OR-REPO * Description: BREIF DESCRIPTION - KEEP IT SHORT * Author: WORDPRESS-DOT-ORG-USERNAME * Version: 0.0.1 * Author URI: HTTP-LINK-TO-MAINTAINER * License: GNU General Public License v2 or later * License URI: http://www.gnu.org/licenses/gpl-2.0.html * Text Domain: short_prefix */ // Begin custom PHP WordPress plugin work
Nota che i plug-in di WordPress dovrebbero in genere essere concessi in licenza come GPL. Tuttavia, le licenze non dovrebbero essere discusse come parte di questo argomento.
https://riptutorial.com/it/home 62
A questo punto, dovresti già vedere il tuo nuovo plug-in nell'area di amministrazione di WordPress. In una configurazione standard dovresti trovare quest'area in /wp-admin/plugins.php . Vai avanti e attiva il tuo plug-in e sei pronto per passare alla fase successiva della creazione del plug-in!
Per concludere il nostro esempio su qualcosa che è possibile fare, ora puoi aggiungere quanto segue alla fine del tuo file plugin:
die('My custom plugin is loaded : '. __FILE__);
L'aggiornamento del sito dopo questa modifica dovrebbe comportare la stampa di questo testo su tutte le pagine. Non farlo mai nei siti di produzione (dal vivo) e ricordati sempre di ritirarlo prima di continuare.
Leggi Creazione di plugin WordPress online: https://riptutorial.com/it/wordpress/topic/9420/creazione-di-plugin-wordpress
https://riptutorial.com/it/home 63
Capitolo 22: Customizer Hello World
Parametri
Parametro Dettagli
MyThemeUn identificatore univoco per il tema (o tema figlio). Questo può essere il tuo tema
Examples
Ciao esempio del mondo
Il concetto fondamentale del customizer è che gli amministratori possono vivere le modifiche di anteprima al proprio sito e quindi aggiungerle in modo permanente.
Quanto segue può essere copiato e incollato nel file functions.php un tema su
Aggiungi una sezione di personalizzazione chiamata My First Section•Aggiungi un'impostazione di personalizzazione chiamata Hello World Color consente all'amministratore di scegliere un colore
•
Aggiungi una regola css per .hello-world che corrisponderà al colore scelto e predefinito a #000000 se non viene selezionato nulla. L'impostazione verrà inserita in un tag <style> alla fine di <head> .
•
function mytheme_customize_register( $wp_customize ) { $wp_customize->add_section( 'my_first_section_id' , array( 'title' => __( 'My First Section', 'mytheme' ), 'priority' => 30, ) ); $wp_customize->add_setting( 'hello_world_color' , array( 'default' => '#000000', 'transport' => 'refresh', ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'link_color', array( 'label' => __( 'Hello World Color', 'mytheme' ), 'section' => 'my_first_section_id', 'settings' => 'hello_world_color', ) ) ); } add_action( 'customize_register', 'mytheme_customize_register' );
https://riptutorial.com/it/home 64
function mytheme_customize_css() { ?> <style type="text/css"> .hello-world { color: #<?php echo get_theme_mod('hello_world_color', '000000'); ?>; } </style> <?php } add_action( 'wp_head', 'mytheme_customize_css');
Leggi Customizer Hello World online: https://riptutorial.com/it/wordpress/topic/2875/customizer-hello-world
https://riptutorial.com/it/home 65
Capitolo 23: Debug
introduzione
https://codex.wordpress.org/Debugging_in_WordPress
Il debug di codice PHP fa parte di qualsiasi progetto, ma WordPress viene fornito con specifici sistemi di debug progettati per semplificare il processo e standardizzare il codice attraverso il nucleo, i plugin e i temi.
Osservazioni
Plugin per il debug in WordPress:
https://wordpress.org/plugins/query-monitor/•https://wordpress.org/plugins/debug-bar/•https://wordpress.org/plugins/debug-bar-console/•https://wordpress.org/plugins/kint-debugger/•https://wordpress.org/plugins/rest-api-console/•
Examples
WP_DEBUG
WP_DEBUG è una costante PHP (una variabile globale permanente) che può essere utilizzata per attivare la modalità di "debug" in tutto WordPress. Si presume che sia falso di default e di solito è impostato su true nel file wp-config.php sulle copie di sviluppo di WordPress.
define( 'WP_DEBUG', true ); define( 'WP_DEBUG', false );
WP_DEBUG_LOG
WP_DEBUG_LOG è un compagno di WP_DEBUG che fa sì che anche tutti gli errori vengano salvati in un file di registro debug.log all'interno della directory / wp-content /. Ciò è utile se si desidera rivedere tutte le notifiche in un secondo momento o è necessario visualizzare le notifiche generate fuori schermo (ad esempio durante una richiesta AJAX o esecuzione di wp-cron).
//enable define( 'WP_DEBUG_LOG', true ); //disable define( 'WP_DEBUG_LOG', false );
WP_DEBUG_DISPLAY
https://riptutorial.com/it/home 66
WP_DEBUG_DISPLAY è un altro compagno di WP_DEBUG che controlla se i messaggi di debug sono visualizzati all'interno dell'HTML delle pagine o meno. L'impostazione predefinita è 'true' che mostra gli errori e gli avvertimenti man mano che vengono generati. Impostando su false si nascondono tutti gli errori. Questo dovrebbe essere usato insieme a WP_DEBUG_LOG in modo che gli errori possano essere riesaminati in seguito. Nota: per WP_DEBUG_DISPLAY fare qualsiasi cosa, WP_DEBUG deve essere abilitato (true).
//enable define( 'WP_DEBUG_DISPLAY', true ); //disable define( 'WP_DEBUG_DISPLAY', false );
SCRIPT_DEBUG
SCRIPT_DEBUG è una costante correlata che SCRIPT_DEBUG a WordPress di utilizzare le versioni "dev" dei file CSS e JavaScript core anziché delle versioni miniate normalmente caricate. Ciò è utile quando si testano le modifiche a qualsiasi file .js o .css incorporato. Il valore predefinito è falso.
//enable define( 'SCRIPT_DEBUG', true ); //disable define( 'SCRIPT_DEBUG', false );
SAVEQUERIES
La definizione SAVEQUERIES salva le query del database in un array e tale array può essere visualizzato per consentire l'analisi di tali query. La costante definita come true fa sì che ogni query venga salvata, quanto tempo impiega la query per l'esecuzione e quale funzione la chiama. NOTA: questo avrà un impatto sulle prestazioni sul tuo sito, quindi assicurati di disattivarlo quando non esegui il debug.
define( 'SAVEQUERIES', true );
La matrice è memorizzata nel
global $wpdb->queries;
Esempio di wp-config.php e buone pratiche per il debug
Il seguente codice, inserito nel file wp-config.php, registrerà tutti gli errori, le avvertenze e gli avvertimenti in un file chiamato debug.log nella directory del wp-content. Nasconde anche gli errori in modo che non interrompano la generazione della pagina.
// Enable WP_DEBUG mode define( 'WP_DEBUG', true );
https://riptutorial.com/it/home 67
// Enable Debug logging to the /wp-content/debug.log file define( 'WP_DEBUG_LOG', true ); // Disable display of errors and warnings define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 ); // Use dev versions of core JS and CSS files (only needed if you are modifying these core files) define( 'SCRIPT_DEBUG', true );
Buona pratica Se si desidera aggiungere messaggi personalizzati al registro di debug, aggiungere il codice seguente nel proprio plug-in o tema.
//Checking is function_exists if ( !function_exists( 'print_to_log' ) ) { //function writes a message to debug.log if debugging is turned on. function print_to_log( $message ) { if ( true === WP_DEBUG ) { if ( is_array( $message ) || is_object( $message ) ) { error_log( print_r( $message, true ) ); } else { error_log( $message ); } } } }
Vedi i log in un file separato
Quando si ha una chiamata Ajax, è estremamente difficile ottenere un registro dall'interno della funzione di callback. Ma se abiliti il debug
define('WP_DEBUG', true);
e poi dopo quell'aggiunta
ini_set('log_errors',TRUE); ini_set('error_reporting', E_ALL); ini_set('error_log', dirname(__FILE__) . '/error_log.txt');
si avrà un file error.log.txt nella cartella principale in cui si trovano tutti i log. puoi anche registrarli con
error_log( print_r( 'what I want to check goes here', true) );
dentro il tuo codice Questo renderà la tua vita molto più facile.
Leggi Debug online: https://riptutorial.com/it/wordpress/topic/9170/debug
https://riptutorial.com/it/home 68
Capitolo 24: dentro
Sintassi
add_action ('init', callable $ function)1.
Osservazioni
init è un hook di azione che viene generato dopo il completamento del caricamento di WordPress ma prima che vengano inviate le intestazioni HTTP.
Examples
Elaborazione dei dati di richiesta $ _POST
add_action ('init', 'process_post_data');
function process_post_data() { if( isset( $_POST ) ) { // process $_POST data here } }
Elaborazione dei dati di richiesta $ _GET
add_action('init', 'process_get_data'); function process_get_data() { if( isset( $_GET ) ) { // process $_GET data here } }
Registrazione di un tipo di messaggio personalizzato
add_action( 'init', function() { register_post_type( 'event', array( 'public' => true, 'label' => 'Events' ); ); });
Registra un nuovo tipo di post personalizzato con un'etichetta Events e un event slug
Leggi dentro online: https://riptutorial.com/it/wordpress/topic/6375/dentro
https://riptutorial.com/it/home 69
Capitolo 25: Esegui WordPress locale con XAMPP
introduzione
Con XAMPP puoi installare un server web sul tuo pc locale. Ha un server web Apache, il database MariaDB (MySQL) e lavora con Perl e PHP. Dopo l'installazione, puoi eseguire ed eseguire il debug, ad es. Sistemi di gestione dei contenuti come WordPress sul tuo pc locale. Puoi usarlo con Windows, Linux, Mac OS X e Solaris.
Examples
1. Installazione di XAMPP
Scarica il programma di installazione per la versione corrente di XAMPP1. Passare attraverso la procedura guidata di installazione e non modificare nulla se non si è sicuri di cosa si sta modificando.
2.
Dopo l'installazione viene visualizzato il pannello di controllo XAMPP. Basta fare clic sul pulsante di avvio di Apache e MySQL per eseguire entrambi con la configurazione di base.
3.
Se il computer è connesso a una rete locale e si desidera accedere al server Web anche da altri computer, assicurarsi che il firewall lo consenta.
4.
2. Configurare un database dopo aver installato XAMPP
Per eseguire WordPress sul tuo computer devi prima configurare un database. Assicurarsi che Apache e MySQL siano in esecuzione (consultare Installazione di XAMPP passaggio 3)
Avvia un browser web di tua scelta e inserisci "localhost" nell'indirizzo.1. Scegli la tua lingua preferita e seleziona nella categoria "Strumenti" -> phpMyAdmin .2. Seleziona la scheda Databases .3. Inserisci il nome del tuo database (avrai bisogno di questo nome in seguito) sotto "Crea database" e scegli utf8_general_ci nel menu a discesa "Collation".
4.
Fare clic sul database creato sul lato sinistro e selezionare la scheda Users .5. Aggiungi un nuovo utente facendo clic su Add user .6. Inserisci il tuo nome utente, scegli local nel menu a discesa "Host" (se vuoi accedere al database da altri computer nella rete scegli Any host ) e inserisci la tua password (ne avrai bisogno anche in seguito).
7.
Controlla se sotto "Database per utente" Grant all privileges on wildcard name è selezionato.
8.
Premi Go .9.
3. Installazione di WordPress dopo aver installato il database
https://riptutorial.com/it/home 70
Dopo aver installato XAMPP e configurato il database MySQL, è possibile installare WordPress.
Scarica l'ultima versione di WordPress.1. Decomprimere il file e inserire la cartella nella directory principale del proprio server web (se si è utilizzato il percorso suggerito durante l'installazione di XAMPP è "c: \ xampp \ htdocs").
2.
Tutti i file esistenti due volte possono essere sostituiti.3. Inserisci nel campo dell'indirizzo del tuo browser "localhost / wordpress / wp-admin / install.php".
4.
Dopo aver scelto la lingua, fai clic su Continue e poi su Let's go .5. Sostituisci tutti i campi di testo predefiniti con la configurazione scelta (consulta " Imposta un database "). Non modificare "Database Host" e "Table Prefix", tranne per il fatto che si desidera eseguire la migrazione dell'installazione locale di WordPress online. Quindi tieni presente che la sicurezza è importante. Ulteriori informazioni sono disponibili in Imposta prefisso nella nuova installazione di WordPress .
6.
Premere Submit e poi Run the install .7. Ora devi inserire il nome del tuo sito, un nome utente, una password e una e-mail valida.8. Fai clic su Install WordPress per terminare la configurazione e accedi al tuo nuovo sito WordPress locale.
9.
Leggi Esegui WordPress locale con XAMPP online: https://riptutorial.com/it/wordpress/topic/9551/esegui-wordpress-locale-con-xampp
https://riptutorial.com/it/home 71
Capitolo 26: Esercizi personalizzati con excerpt_length e excerpt_more
Examples
Limita la lunghezza dell'estratto a 50 parole
Inserisci il seguente codice in functions.php :
function themify_custom_excerpt_length( $length ) { return 50; } add_filter( 'excerpt_length', 'themify_custom_excerpt_length', 999 );
Usa 999 come priorità per garantire che la funzione venga eseguita dopo il filtro WordPress predefinito, altrimenti sovrascriverà ciò che è impostato qui.
Aggiunta di un collegamento Leggi altro alla fine dell'estratto
Per fare questo, inserisci il seguente codice in functions.php :
function custom_excerpt_more($more) { return '<a href="'. get_permalink($post->ID) . '">Read More</a>'; } add_filter('excerpt_more', 'custom_excerpt_more');
I risultati dovrebbero assomigliare a questo:
https://riptutorial.com/it/home 72
Aggiunta di alcuni punti alla fine dell'estratto
Nelle nostre funzioni.php
function new_excerpt_more( $more ) { return '.....'; } add_filter('excerpt_more', 'new_excerpt_more');
Dovremmo ottenere questo:
https://riptutorial.com/it/home 73
Leggi Esercizi personalizzati con excerpt_length e excerpt_more online: https://riptutorial.com/it/wordpress/topic/6104/esercizi-personalizzati-con-excerpt-length-e-excerpt-more
https://riptutorial.com/it/home 74
Capitolo 27: Fare richieste di rete con l'API HTTP
Sintassi
$ response = wp_remote_get ($ url, $ args);•$ response = wp_remote_post ($ url, $ args);•$ response = wp_safe_remote_post ($ url, $ args);•
Parametri
Parametro Dettagli
$ url (stringa) (Obbligatorio) URL del sito da recuperare.
$ args (matrice) (Opzionale) Richiedi argomenti.
Osservazioni
ritorna
(WP_Error | array) La risposta come array o WP_Error in caso di errore.
Examples
OTTIENI una risorsa JSON remota
Questo snippet catturerà una risorsa formattata JSON, la decodificherà e la stamperà in formato array PHP.
// Fetch $response = wp_remote_get( 'http://www.example.com/resource.json' ); if ( ! is_wp_error( $response ) ) { $headers = wp_remote_retrieve_headers( $response ); if ( isset( $headers[ 'content-type' ] ) && 'application/json' === $headers[ 'content-type' ] ) { print_r( json_decode( wp_remote_retrieve_body( $response ) ) ); } }
Leggi Fare richieste di rete con l'API HTTP online: https://riptutorial.com/it/wordpress/topic/1116/fare-richieste-di-rete-con-l-api-http
https://riptutorial.com/it/home 75
Capitolo 28: Funzione: add_action ()
Sintassi
add_action ($ tag, $ function_to_add)•add_action ($ tag, $ function_to_add, $ priority)•add_action ($ tag, $ function_to_add, $ priority, $ accepted_args)•
Parametri
Parametro Dettagli
$ tag (stringa) (Obbligatorio) Il nome dell'azione a cui è agganciato $function_to_add
$ function_to_add
( callable ) (Obbligatorio) La funzione che deve essere chiamata quando viene eseguita l'azione indicata da $tag
$ priorità
(int) (Opzionale) Valore predefinito: 10 Utilizzato per specificare l'ordine in cui vengono eseguite le funzioni associate a una determinata azione. I numeri più bassi corrispondono all'esecuzione precedente e le funzioni con la stessa priorità vengono eseguite nell'ordine in cui sono stati aggiunti all'azione.
$ accepted_args
(int) (Opzionale) Valore predefinito: 1 Il numero di argomenti accettati dalla funzione.
Osservazioni
La funzione add_action() crea un hook di azione , associando una funzione PHP a una determinata azione "tag" o nome. Quando l'azione viene "innescata" da una chiamata a do_action() (o do_action_ref_array() ) con un tag specifico, verranno eseguite tutte le funzioni "agganciate" a quel tag.
Nella maggior parte dei casi, questa funzione dovrebbe essere utilizzata nel file functions.php un tema o in un file plugin o in un altro file sorgente caricato da entrambi.
Questa funzione è una parte dell'API Plugin
Examples
Azione base Hook
L'applicazione di base di add_action() consiste nell'aggiungere codice personalizzato da eseguire
https://riptutorial.com/it/home 76
in una determinata posizione in un codice sorgente dell'installazione di WordPress - utilizzando azioni fornite dal Core di WordPress o create da codice di terze parti come plug-in e plug-in temi.
Per aggiungere contenuto alla sezione <head></head> del sito - dì ad un meta elemento <link> aggiungi per indicare dove sono reperibili le informazioni sul copyright per il sito - add_action() può essere usato per allegare una funzione che stampa il markup appropriato per l'azione 'wp_head' (che "si innesca" quando WordPress crea la sezione <head> ):
function add_copyright_meta_link() { echo( '<link rel="copyright" href="' . get_home_url() . '/copyright">' ); } add_action( 'wp_head', 'add_copyright_meta_link' );
Azione Hook Priority
Qualsiasi numero di funzioni può essere "agganciato" a qualsiasi azione specifica. In alcuni casi è importante che una funzione agganciata venga eseguita prima o dopo altre, che è il punto in cui entra in gioco il terzo parametro di add_action() , $priority .
Se l'argomento $priority è omesso, la funzione verrà associata con la priorità predefinita di 10 . Quando l'azione è "innescata", le funzioni "agganciate" verranno chiamate a partire da quelle aggiunte con la $priority più piccola e passando alle funzioni con la $priority più grande. Tutte le funzioni collegate che condividono la stessa priorità verranno chiamate nell'ordine in cui sono state aggiunte (l'ordine in cui sono state eseguite le rispettive chiamate add_action() ).
Ad esempio, supponiamo che un plug-in di terze parti utilizzi una funzione collegata all'azione 'template_redirect' per inoltrare i visitatori alla pagina di daily-deal a un link di affiliazione per un sito di e-commerce esterno, ma desideri il reindirizzamento si verifica solo per gli utenti registrati. Dovresti utilizzare il tuo hook 'template_redirect' per inviare i visitatori che hanno effettuato il logout alla pagina di accesso. Dopo aver stabilito che il plug-in di terze parti allega la sua funzione con il $piority predefinito di 10 , puoi agganciare la tua funzione con una priorità di 9 per assicurarti che il tuo check-in di accesso avvenga prima:
function redirect_deal_visitors_to_login() { if( is_page( 'daily-deal' ) && !user_is_logged_in() ) { wp_redirect( wp_login_url() ); exit(); } } add_action( 'template_redirect', 'redirect_deal_visitors_to_login', 9 );
Agganciare i metodi di classe e oggetto alle azioni
Le classi PHP sono un potente strumento per migliorare l'organizzazione del codice e ridurre al minimo le collisioni di denominazione. Ad un certo punto o in un altro, inevitabilmente sorge la domanda su come creare un hook di azione per un metodo di classe.
L'argomento $function_to_add viene spesso mostrato come una stringa contenente il nome della
https://riptutorial.com/it/home 77
funzione, tuttavia il tipo di dati dell'argomento è in realtà un " callable ", che per i nostri scopi può essere riassunto come "un riferimento a una funzione o un metodo".
Esistono numerosi formati richiamabili che possono essere utilizzati per fare riferimento a metodi su classi e oggetti. In tutti i casi, tuttavia, il metodo di riferimento deve essere visibile pubblicamente. Un metodo è pubblico quando è prefisso con la parola chiave public o non ha alcuna parola chiave di visibilità (nel qual caso il metodo è impostato su public).
Oggetto Metodo Azione Ganci
I metodi oggetto vengono eseguiti su una particolare istanza di una classe.
class My_Class { // Constructor function My_Class() { // (Instantiation logic) } // Initialization function public function initialize() { // (Initialization logic) } }
Dopo aver istanziato la classe sopra come segue,
$my_class_instance = new My_Class();
il metodo initialize() sarebbe normalmente invocato sull'oggetto chiamando $my_class_instance->initialize(); . L'aggancio del metodo all'azione WordPress 'init' viene eseguito passando una matrice contenente un riferimento all'istanza e una stringa contenente il nome del metodo dell'oggetto:
add_action( 'init', [ $my_class_instance, 'initialize' ] );
Se si chiama add_action() all'interno di un metodo object, è possibile utilizzare anche $this pseudo-variabili:
class My_Class { // Constructor function My_Class() { // (Instantiation logic) add_action( 'init', [ $this, 'initialize' ] ); } // Initialization function public function initialize() { // (Initialization logic) } }
https://riptutorial.com/it/home 78
Ganci di azione del metodo di classe
I metodi di classe sono eseguiti staticamente su una classe piuttosto che su una particolare istanza. Data la seguente classe,
class My_Class { // Initialization function public static function initialize() { // (Initialization logic) } }
il metodo initialize() verrebbe normalmente richiamato usando l'operatore :: scope-resolution, cioè My_Class::initialize(); . L'hooking di un metodo statico di classe a un WordPress può essere fatto in un paio di modi diversi:
Utilizzando un array composto da una stringa contenente il nome della classe e una stringa contenente il nome del metodo:
add_action( 'init', [ 'My_Class', 'initialize' ] );
•
Passando una stringa contenente un riferimento completo al metodo, incluso l'operatore ::
add_action( 'init', 'My_Class::initialize' );
•
Se add_action() viene chiamato all'interno di un metodo di classe statico, al posto del nome della classe può essere utilizzata la parola chiave self o la __CLASS__ magia __CLASS__ . Si noti che questo è generalmente sconsigliabile in quanto i valori di questi elementi diventano alquanto controintuitivi nel caso dell'ereditarietà di classe.
class My_Class { // Setup function public static function setup_actions() { add_action( 'init', 'self::initialize' ); } // Initialization function public static function initialize() { // (Initialization logic) } }
•
Leggi Funzione: add_action () online: https://riptutorial.com/it/wordpress/topic/6561/funzione--add-action---
https://riptutorial.com/it/home 79
Capitolo 29: Funzione: wp_trim_words ()
Sintassi
<?php $trimmed_text = wp_trim_words( $text, $num_words = 55, $more = null ); ?>•
Parametri
Parametro Dettagli
$text (Stringa) (Obbligatorio) Testo che verrà abbreviato o tagliato.
$num_words (Intero) (Obbligatorio) Numero di parole a cui il testo sarà limitato.
$more (Stringa) (Facoltativo) Cosa aggiungere se il testo $ deve essere tagliato.
Examples
Ritaglio dei contenuti del post
Questa funzione riduce il testo a un numero specificato di parole e restituisce il testo abbreviato.
<?php echo wp_trim_words( get_the_content(), 40, '...' ); ?>
Nell'esempio sopra stiamo passando il contenuto del post alla funzione. Limiterà la lunghezza del contenuto a 40 parole e ridurrà il resto delle parole.
Leggi Funzione: wp_trim_words () online: https://riptutorial.com/it/wordpress/topic/7866/funzione--wp-trim-words---
https://riptutorial.com/it/home 80
Capitolo 30: Gerarchia dei modelli
Osservazioni
Plugin per il debug in WordPress:
https://wordpress.org/plugins/query-monitor/•https://wordpress.org/plugins/debug-bar/•https://wordpress.org/plugins/debug-bar-console/•https://wordpress.org/plugins/kint-debugger/•https://wordpress.org/plugins/rest-api-console/•
Examples
introduzione
Una delle cose più importanti da imparare quando si sta creando un tema WordPress è la gerarchia di WordPress Template per temi. La gerarchia dei modelli definisce quale file modello verrà caricato per ogni richiesta e in quale ordine. Se il primo modello non esiste nella gerarchia, WordPress proverà a caricare il prossimo e così via fino a quando non index.php in index.php .
Per descrivere dettagliatamente la gerarchia dei modelli, il modo migliore è ovviamente utilizzare un'immagine con la struttura completa:
https://riptutorial.com/it/home 81
La gerarchia dei modelli inizia con i tipi principali di pagine come archivio, pagina singolare o priDopodiché troveremo i modelli reali che verranno caricati. Innanzitutto ci sono i modelli più specifi
Per esempio category-$slug.php
https://riptutorial.com/it/home 82
che ha come target solo la categoria con uno slug specifico, ad esempio category-books.php verrebbe utilizzato solo per la categoria con il book slug. Un altro esempio è page-$id.php che si rivolge solo a una pagina con un ID specifico, ad esempio page-41.php indirizzerebbe solo la pagina con l'ID 41.
Dopo i template che hanno come target specifici tipi o post, arriviamo ai modelli di tipo generico, come archive.php per tutte le pagine di archivio o page.php per tutte le pagine. Ma ricorda, quelli saranno usati solo se la pagina corrente non corrisponde a nessuno dei modelli che sono più in alto nella gerarchia.
Infine, se WordPress non è riuscito a trovare modelli corrispondenti nella directory dei modelli, l'ultimo fallback è sempre index.php che è l'unico file di modello richiesto in un tema WordPress.
Debug
È facile perdersi durante il debug della ricerca. Puoi usare il comando integrato di PHP debug_backtrace .
Inserisci lo snippet successivo in qualsiasi modello che desideri eseguire il debug e visualizza la pagina generata:
<!-- <?php print_r( debug_backtrace() ) ?> -->
Leggi Gerarchia dei modelli online: https://riptutorial.com/it/wordpress/topic/6116/gerarchia-dei-modelli
https://riptutorial.com/it/home 83
Capitolo 31: get_bloginfo ()
introduzione
Recupera informazioni sul sito corrente.
Sintassi
get_bloginfo ($ mostra, $ filtro)•
Parametri
Parametro Dettagli
$ spettacolo (stringa) Le informazioni sull'impostazione del sito da recuperare.
Filtro $ (stringa) La specifica su se restituire un valore filtrato o meno.
Osservazioni
$ spettacolo
Valori Descrizione Esempio
'nome' (predefinito) Titolo del sito 'Matt Mullenweg'
'descrizione' Slogan del sito 'Just another WordPress site'
'Wpurl'URL dell'installazione di WordPress. Uguale alla funzione site_url()
'http://example.com' , 'http://localhost/wordpress'
'Url'URL del sito. Uguale alla funzione home_url()
'http://example.com' , 'http://localhost/wordpress'
'Admin_email'Indirizzo email dell'amministratore principale
'Charset'Codifica dei caratteri delle pagine e dei feed
'UTF-8'
'versione'Versione corrente dell'installazione di WordPress
'4.5'
https://riptutorial.com/it/home 84
Valori Descrizione Esempio
'Html_type'valore del tipo di contenuto dell'HTML
'text/html'
'Text_direction'Direzione del testo determinata dalla lingua del sito
'ltr'
'linguaggio'Codice lingua basato su ISO 639-1
'en-US'
'Stylesheet_url'
URL del foglio di stile del tema attivato. Priorità valore: tema figlio »tema padre.
'http://example.com/wp-content/themes/twentysixteen/style.css'
'Stylesheet_directory'
Posizione della risorsa del tema attivato. Priorità valore: tema figlio »tema padre.
'http://example.com/wp-content/themes/twentysixteen'
'Template_url'
Directory URL del tema attivato. Priorità valore: tema padre »Tema bambino.
'http://example.com/wp-content/themes/twentysixteen'
'Template_directory' Lo stesso di 'template_url'
'Pingback_url' Pingback XML-RPC file 'http://example/xmlrpc.php'
'Atom_url' URL del feed Atom 'http://example/feed/atom/'
'Rdf_url'URL feed RDF / RSS 1.0
'http://example/feed/rdf/'
'Rss_url' RSS 0.92 feed URL 'http://example/feed/rss/'
'Rss2_url' URL del feed RSS 2.0 'http://example/feed/'
'Comments_atom_url'Commenti URL del feed Atom
'http://example/comments/feed/atom/'
'indirizzo del sito'(deprecato) Utilizzare invece 'url'
'casa'(deprecato) Utilizzare invece 'url'
https://riptutorial.com/it/home 85
Filtro $
Valori Descrizione Esempio
'raw' (predefinito)
Nessun filtro verrà applicatodati grezzi
'display'I filtri verranno applicati al valore restituito se $show non è né 'url' , 'directory' , 'home'
dati filtrati
Examples
Ottenere il titolo del sito
<?php echo get_bloginfo( 'name' ); ?>
o
<?php echo get_bloginfo(); ?>
Produzione
Matt Mullenweg
Basato su queste impostazioni di esempio
https://riptutorial.com/it/home 86
Ottenere la tagline del sito
<?php echo get_bloginfo( 'description' ); ?>
Produzione
Just another WordPress site
Basato su queste impostazioni di esempio
https://riptutorial.com/it/home 87
Ottenere l'URL del tema attivo
<?php echo esc_url( get_bloginfo( 'stylesheet_directory' ) ); ?>
Produzione
http://example.com/wp-content/themes/twentysixteen
alternative
Internamente, get_bloginfo( 'stylesheet_directory' ) chiama get_stylesheet_directory_uri() , quindi puoi usare quello:
<?php echo esc_url( get_stylesheet_directory_uri() ); ?>
https://riptutorial.com/it/home 88
Molti sviluppatori preferiscono utilizzare queste funzioni dedicate a causa di convenzioni di denominazione incoerenti tra loro e get_bloginfo() . Ad esempio, get_stylesheet_directory() restituisce il percorso del tema figlio; tuttavia, come illustra il nostro esempio precedente, get_bloginfo( 'stylesheet_directory' ) restituisce l'URL del tema get_bloginfo( 'stylesheet_directory' ) . Se invece usi get_stylesheet_directory_uri() , ci sono meno possibilità di confusione sul fatto che tu stia recuperando un percorso o un URL.
Ottieni l'URL del sito
<?php echo esc_url(get_bloginfo('url')); ?>
o se è necessario il collegamento a una pagina secondaria
<?php echo esc_url(get_bloginfo('url') . '/some-sub-page'); ?>
Ottieni l'indirizzo email dell'amministratore del sito
Possiamo utilizzare la funzione get_bloginfo per recuperare l'indirizzo email dell'amministratore del sito.
<?php echo get_bloginfo('admin_email'); ?>
Leggi get_bloginfo () online: https://riptutorial.com/it/wordpress/topic/524/get-bloginfo---
https://riptutorial.com/it/home 89
Capitolo 32: get_home_path ()
introduzione
Ottieni il percorso assoluto del filesystem nella root dell'installazione di WordPress.
Parametri
Parametro Dettagli
Nessuna Questa funzione non accetta alcun parametro.
Osservazioni
Differenza importante tra get_home_path() e ABSTPATH
Tieni presente la differenza tra ABSPATH e get_home_path() se WordPress è installato in una sottocartella.
La funzione get_home_path() restituirà sempre un percorso senza la sottocartella:
http://www.example.com - / var / www / htdocs / example•http://www.example.com/wp - / var / www / htdocs / example•
Questo è il modo in cui differisce da ABSPATH , che restituirà valori diversi:
http://www.example.com - / var / www / htdocs / example•http://www.example.com/wp - / var / www / htdocs / example / wp•
ABSPATH è definito per la prima volta in wp-load.php che si trova in /var/www/htdocs/example/wp/wp-load.php quindi da qui ABSPATH prenderà la sua definizione.
get_home_path() controlla se site_url e home_url differiscono e rimuove la sottostringa dal percorso. Altrimenti restituisce il valore ABSPATH :
function get_home_path() { $home = set_url_scheme( get_option( 'home' ), 'http' ); $siteurl = set_url_scheme( get_option( 'siteurl' ), 'http' ); if ( ! empty( $home ) && 0 !== strcasecmp( $home, $siteurl ) ) { $wp_path_rel_to_home = str_ireplace( $home, '', $siteurl ); /* $siteurl - $home */ $pos = strripos( str_replace( '\\', '/', $_SERVER['SCRIPT_FILENAME'] ), trailingslashit( $wp_path_rel_to_home ) ); $home_path = substr( $_SERVER['SCRIPT_FILENAME'], 0, $pos ); $home_path = trailingslashit( $home_path ); } else { $home_path = ABSPATH; }
https://riptutorial.com/it/home 90
return str_replace( '\\', '/', $home_path ); }
Usandolo nel tuo codice
La chiamata a get_home_path() deve essere eseguita in un contesto in cui wp-admin/includes/file.php è già stato incluso.
Ad esempio, utilizzando get_home_path() all'interno admin_init va bene, ma usarlo all'interno di init non lo è e causerà un errore fatale di PHP:
Call to undefined function get_home_path()
Questo file viene incluso solo all'interno del contesto di amministrazione (dashboard), se ne hai assolutamente bisogno al di fuori di questo contesto dovrai includere il file te stesso prima di chiamare la funzione:
require_once(ABSPATH . 'wp-admin/includes/file.php');
Examples
uso
$path = get_home_path();
Valore di ritorno:
string
Percorso completo del file system alla radice dell'installazione di WordPress, anche se è installato in una sottocartella.
Esempio:
/var/www/htdocs/example
Leggi get_home_path () online: https://riptutorial.com/it/wordpress/topic/9699/get-home-path---
https://riptutorial.com/it/home 91
Capitolo 33: get_option ()
introduzione
Recupera un valore di opzione basato su un nome di opzione.
Sintassi
get_option ($ option, $ default)•
Parametri
Parametro Dettagli
$ opzione(stringa) Nome dell'opzione da recuperare. Previsto per non essere fuggito SQL.
$ di default (misto) (Opzionale) Valore predefinito da restituire se l'opzione non esiste.
Osservazioni
Elenco di argomenti per $ opzione
'Admin_email'•'Blogname'•'BlogDescription'•'Blog_charset'•'formato data'•'Default_category'•'casa'•'indirizzo del sito'•'modello'•'Start_of_week'•'Upload_path'•'Users_can_register'•'Posts_per_page'•'Posts_per_rss'•
Examples
Mostra il titolo del blog
Codice
https://riptutorial.com/it/home 92
<h1><?php echo get_option( 'blogname' ); ?></h1>
Produzione
Nome del blog in stile H1
Mostra set di caratteri
Codice
<p><?php echo esc_html( sprintf( __( 'Character set: %s', 'textdomain' ), get_option( 'blog_charset' ) ) ); ?></p>
Produzione
Set di caratteri: UTF-8
Gestire le opzioni non esistenti
Codice
<?php echo get_option( 'something_bla_bla_bla' ); ?>
Produzione
falso
Codice
<?php echo get_option( 'something_bla_bla_bla', 'Oh no!' ); ?>
Produzione
Oh no!
Leggi get_option () online: https://riptutorial.com/it/wordpress/topic/9194/get-option---
https://riptutorial.com/it/home 93
Capitolo 34: get_permalink ()
introduzione
Questa funzione restituisce il paralink completo del post corrente o del post designato.
Sintassi
get_permalink ($ post, $ leavename)•
Parametri
Parametro Dettagli
$ postale(int) (facoltativo) Post ID o post oggetto. L'impostazione predefinita è l'ID del post corrente.
$ leavename
(bool) (opzionale) Indica se mantenere il nome del post o il nome della pagina.
Osservazioni
Per il parametro $ leavename, è falso per impostazione predefinita.
Examples
Semplice utilizzo di get_parmalink
Codice
echo get_permalink();
Produzione
Il link della pagina corrente, ad esempio: http://website.com/category/name-of-post/
Specificare il post per ottenere il collegamento
Codice
echo get_permalink( 44 );
Produzione
https://riptutorial.com/it/home 94
Il link dell'ID post: 44, ad esempio: http://website.com/category/name-of-post/
Ottieni il link senza il nome del post
Codice
echo get_permalink( 44 , false );
Produzione
Il link dell'ID post: 44 senza il nome del post, ad esempio: http://website.com/category/%postname%/
Leggi get_permalink () online: https://riptutorial.com/it/wordpress/topic/9209/get-permalink---
https://riptutorial.com/it/home 95
Capitolo 35: get_template_part ()
Sintassi
get_template_part ($ slug, $ name);•get_template_part ($ slug);•
Parametri
Parametro Dettagli
$ slug (stringa) Nome slug del modello generico
nome $ (stringa) Nome modello specializzato
Examples
Carica una parte modello da una sottocartella
get_template_part( 'foo/bar', 'page');
richiederà 'bar-page.php' dalla directory 'foo'.
Ottieni un file specifico
È possibile ottenere file specifici utilizzando questa funzione.
get_template_part('template-parts/layout');
Includi il file layout.php dalla sottodirectory template-parts posta nella radice della cartella del tema.
Leggi get_template_part () online: https://riptutorial.com/it/wordpress/topic/5897/get-template-part---
https://riptutorial.com/it/home 96
Capitolo 36: get_template_part ()
introduzione
Lo scopo di questa funzione è di standardizzare il modo in cui importare partial o componenti di un tema nel modello di tema principale. È possibile utilizzare un SSI PHP standard (incluso il lato server), tuttavia, vi sono alcuni vantaggi nell'utilizzo di get_template_part (). L'utilizzo di questa funzione riduce gli errori a rischio di sviluppatori meno esperti che tentano di identificare il percorso completo sul server. Inoltre, fallisce con garbo quando i file non esistono e gestisce un sistema di fallback di gerarchia personalizzato noto come "ricerca modello sfocato".
Sintassi
get_template_part ($ slug)•get_template_part ($ slug, $ name)•
Parametri
Parametro Dettagli
$ slug (stringa) Il nome slug del modello personalizzato.
nome $ (stringa) Il nome del modello specializzato. Opzionale
Examples
Incluso un modello personalizzato
<?php get_template_part( 'foo' ); ?>
include
../wp-content/themes/your-theme-slug/foo.php
Incluso un modello personalizzato con un nome file separato dal trattino
<?php get_template_part( 'foo','bar' ); ?>
include
../wp-content/themes/your-theme-slug/foo-bar.php
https://riptutorial.com/it/home 97
Incluso un modello personalizzato da una directory
<?php get_template_part( 'dir/foo' ); ?>
include
../wp-content/themes/your-theme-slug/dir/foo.php
Incluso un modello personalizzato con un nome file separato da un trattino situato all'interno di una directory
<?php get_template_part( 'dir/foo', 'bar' ); ?>
include
../wp-content/themes/your-theme-slug/dir/foo-bar.php
Passaggio della variabile all'ambito del modello personalizzato
<?php set_query_var( 'passed_var', $my_var ); get_template_part( 'foo', 'bar' ); ?>
foo-bar.php in foo-bar.php
<?php echo $passed_var; ?>
Leggi get_template_part () online: https://riptutorial.com/it/wordpress/topic/5993/get-template-part---
https://riptutorial.com/it/home 98
Capitolo 37: get_template_part ()
Sintassi
get_template_part ( 'file-name-no-estensione');•
Parametri
Parametro Descrizione
file-name-no-estensione
Il nome della parte modello senza estensione. Ad esempio "foo" invece di "foo.php"
Examples
Caricamento parte del modello
Estrae il codice da un determinato file specificato in un altro file in cui è stata effettuata la chiamata.
Ad esempio all'interno di example.php
<h1>Hello World!</h1>
All'interno di page.php
// header code get_template_part('example'); // rest of page code
Produzione:
// header code <h1>Hello World</h1> // rest of page code
Leggi get_template_part () online: https://riptutorial.com/it/wordpress/topic/6267/get-template-part---
https://riptutorial.com/it/home 99
Capitolo 38: get_the_category ()
introduzione
Questa funzione restituisce tutte le categorie come una matrice del post o della pagina corrente o del post o pagina designato.
Sintassi
get_the_category ($ id)•
Parametri
Parametro Dettagli
$ id (int) (Facoltativo) predefinito per l'ID corrente corrente. L'ID del post.
Osservazioni
Si noti che get_the_category () restituisce un array, il che significa che non è possibile echo direttamente il valore restituito.
Ecco un elenco di oggetti di ciascuna categoria che puoi stampare:
term_id•nome•lumaca•term_group•term_taxonomy_id•tassonomia•descrizione•genitore•contare•object_id•filtro•cat_id•category_count•category_description•CAT_NAME•category_nicename•category_parent•
Examples
https://riptutorial.com/it/home 100
Ottieni tutti i nomi delle categorie del post
Codice
$categories = get_the_category(); foreach( $categories as $category ) { echo $category->name . '<br />'; }
Produzione
Tutti i nomi delle categorie della pagina corrente, una per ogni riga.
Ottieni tutti gli ID di categorie del post
Codice
$categories = get_the_category(); foreach( $categories as $category ) { echo $category->term_id . '<br />'; }
Produzione
Tutti gli ID di categorie della pagina corrente, uno su ogni riga.
Leggi get_the_category () online: https://riptutorial.com/it/wordpress/topic/9211/get-the-category---
https://riptutorial.com/it/home 101
Capitolo 39: get_the_title ()
introduzione
Questa funzione restituisce il titolo del post corrente o il post designato.
Sintassi
get_the_title ($ post)•
Parametri
Parametro Dettagli
$ postale(int) (facoltativo) Post ID o post oggetto. L'impostazione predefinita è l'ID del post corrente.
Osservazioni
Se si prevede di ottenere il titolo di un post o di una pagina utilizzando un ciclo post, si consiglia di utilizzare invece the_title ().
Examples
Semplice utilizzo di get_the_title
Codice
get_the_title();
Produzione
Il titolo del post o della pagina corrente
Ottieni il titolo di un ID post specificato
Codice
get_the_title( 44 );
Produzione
Il titolo del post id: 44.
https://riptutorial.com/it/home 102
Leggi get_the_title () online: https://riptutorial.com/it/wordpress/topic/9214/get-the-title---
https://riptutorial.com/it/home 103
Capitolo 40: HOME_URL ()
Sintassi
home_url ($ percorso, $ schema);•
Parametri
Parametro Dettagli
$ path ( Stringa , Opzionale ) Per aggiungere più segmenti dopo l'URL di casa.
schema di $
( String , Opzionale ) Schema per fornire il contesto dell'URL di casa. Accetta 'http', 'https', 'relativo', 'resto' o null.
Examples
Ottenere l'URL della casa
home_url() viene utilizzato per recuperare l'URL della home home_url() corrente.
<?php echo esc_url( home_url( '/' ) ) ); ?>
Produzione
http://www.example.com
Indirizzo del sito
Restituisce l'opzione 'site_url' con il protocollo appropriato ( https: //)
<?php echo site_url(); ?>
Produzione
http://www.example.com
Leggi HOME_URL () online: https://riptutorial.com/it/wordpress/topic/1252/home-url---
https://riptutorial.com/it/home 104
Capitolo 41: il titolo()
introduzione
Questa funzione restituisce il titolo del post corrente.
Sintassi
the_title ($ before, $ after, $ echo);•
Parametri
Parametro Dettagli
$ prima (stringa) (facoltativo) Testo da inserire prima del titolo.
$ dopo (stringa) (facoltativo) Testo da inserire dopo il titolo.
$ echo (Boolean) (opzionale) Visualizza il titolo o lo restituisce per l'utilizzo in PHP
Osservazioni
Per il parametro $ echo, utilizzare true per visualizzare il titolo e usare false per restituirlo per l'utilizzo in PHP
•
Tieni presente che the_title può essere utilizzato solo nei loop, se vuoi usarlo al di fuori dei loop, usa get_the_title
•
Examples
Semplice uso di the_title
Codice
the_title( );
Produzione
Il titolo del post o della pagina corrente
Stampa del titolo con il codice prima e dopo
Codice
https://riptutorial.com/it/home 105
the_title( '<h1>', '</h1>' );
Produzione
Il titolo del post o della pagina corrente nei tag h1
Leggi il titolo() online: https://riptutorial.com/it/wordpress/topic/9213/il-titolo--
https://riptutorial.com/it/home 106
Capitolo 42: Installazione e configurazione
Examples
Wordpress su LAMP
Ho testato i seguenti passaggi su Amazon EC2 con Ubuntu 14.04
Ecco un riepilogo delle righe di comando per installare lo stack di tecnologia LAMP (prima di installare wordpress):
1: Installa stack tecnologico LAMP
Aggiorna linux
#> sudo apt-get update -> aggiorna le informazioni sugli archivi dei pacchetti
#> sudo apt-get upgrade -> installa gli aggiornamenti dei pacchetti
Installa apache2
#> sudo apt-get install apache2
Installa php
#> sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
Installa mysql
#> sudo apt-get install mysql-server php5-mysql
Installa phpmyadmin
#> sudo apt-get install phpmyadmin
Nel caso in cui la cosa sia andata storta, rimuovi il pacchetto installato e i suoi file di configurazione
#> sudo apt-get purge package_name
Una volta installato lo stack, ecco i passaggi per completare l'installazione di wordpress:
2: Installa WordPress
wget https://wordpress.org/latest.zip1.
sudo mkdir /var/www/wordpress2.
Sposta il file zip in / var / www / wordpress ed estrai.3.
cd /etc/apache2/sites-available/4.
https://riptutorial.com/it/home 107
sudo cp 000-default.conf wordpress.conf5.
Modifica wordpress.conf in modo che apache2 sappia inoltrare qualsiasi richiesta o dominio alla cartella app wordpress.
6.
sudo a2ensite wordpress.conf7.
sudo service apache2 restart8.
Vai a PhpMyAdmin tramite il tuo browser da youdomain.com/phpmyadmin. Crea un nuovo utente "wordpress" e controlla per creare il database corrispondente. cd /var/www/wordpress
9.
sudo cp wp-config-example.php wp-config.php10.
Modifica il file di configurazione per aggiungere le informazioni del tuo database wordpress MySQL.
11.
sudo chown -R www-data:www-data /var/www/wordpress12.
sudo chmod -R 755 /var/www/wordpress/13.
Apri il browser e digita il tuo dominio. Dovresti vedere la pagina di installazione di WordPress. Segui le istruzioni e il gioco è fatto!
14.
Installazione WP in MAMP
È abbastanza semplice installare wordpress in MAMP.
Devi seguire alcuni semplici passaggi:
1 - Scarica MAMP da qui , è gratuito e probabilmente non hai bisogno della versione pro.
2 - Installa sul tuo PC o Mac.
3 - Esegui il programma -> vedrai una piccola finestra aperta, da lì puoi impostare MAMP. Al momento lascia tutti i valori preimpostati, per la prima installazione non è necessario complicare la vita! In futuro ricorda che è buona prassi cambiare la password e il nome utente per il database MySQL. Di default è root.
4 - Clicca su "Apri webStart page" - qui puoi vedere le tue informazioni come password, nome amministratore e anche informazioni su MAMP.
5 - Fare clic su strumenti -> phpMyAdmin e verrai reindirizzato alla pagina del database.
6 - Crea un nuovo database, clicca su nuovo e dagli il nome che vuoi, avrai bisogno di questo nome più tardi.
7 - Ora cerca una cartella chiamata "htdocs", è all'interno della cartella MAMP sul tuo PC o Mac. Se utilizzi un Mac, hai bisogno di un'applicazione in Finder e apri l'app utilizzando "mostra contenuto del pacchetto". All'interno troverai la cartella htdocs .
8 - Prendi la cartella di Wordpress e copialo all'interno di htdocs, devi inserire tutta la cartella, non
https://riptutorial.com/it/home 108
mettere il file zip. Rinominare la cartella, è possibile chiamare con il nome del progetto.
9 - Ritorna alla finestra di MAMP nel tuo browser e clicca su "Il mio sito" - questo aprirà una chiamata URL http://localhost:8888 (8888 è la porta predefinita, puoi cambiarla se vuoi). Qui puoi vedere la cartella che hai inserito nella cartella htdocs , fare clic sul nome che hai dato alla cartella.
10 - Ora avvia una normale installazione di WordPress, devi usare Admin e Password. Di default è root e root e usa il nome del database che hai creato in precedenza.
11 - Esegui l'installazione e finisci!
Vedrai il tuo sito web su http://localhost:8888/namefolder Naturalmente è necessario mantenere in esecuzione MAMP.
Leggi Installazione e configurazione online: https://riptutorial.com/it/wordpress/topic/6606/installazione-e-configurazione
https://riptutorial.com/it/home 109
Capitolo 43: L'oggetto $ wpdb
Osservazioni
Esistono due modi per fare riferimento all'oggetto $wpdb . Il primo è usare la parola chiave PHP global per agire sull'istanza globale dell'oggetto.
global $wpdb; echo $wpdb->prefix; // Outputs the prefix for the database
Il secondo modo per usare l'oggetto $wpdb è fare riferimento alla variabile super globale $GLOBALS PHP.
echo $GLOBALS['wpdb']->prefix; // This will also output the prefix for the database
Il secondo modo è scoraggiato in quanto potrebbe non essere considerato la migliore pratica.
Examples
Selezione di una variabile
Nella forma più semplice, è possibile selezionare una singola variabile da una tabella chiamando il metodo get_var dell'oggetto che passa in una query SQL.
global $wpdb; $user = $wpdb->get_var( "SELECT ID FROM $wpdb->users WHERE user_email='[email protected]'" );
È molto importante notare che tutti i valori non attendibili utilizzati nelle query devono essere sottoposti a escape per proteggere dagli attacchi. Questo può essere fatto usando il metodo di prepare dell'oggetto.
global $wpdb; $email = $_POST['email']; $user = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->users WHERE user_email=%s", $email ) ); if( !is_null( $user ){ echo $user; } else { echo 'User not found'; }
Selezione di più righe
È possibile utilizzare get_results per ottenere più righe dal database.
https://riptutorial.com/it/home 110
global $wpdb; $userTable =$wpdb->prefix."users"; $selectUser = $wpdb->get_results("SELECT * FROM $userTable");
Questo mostrerà tutti gli utenti elencati nella matrice.
Leggi L'oggetto $ wpdb online: https://riptutorial.com/it/wordpress/topic/2691/l-oggetto---wpdb
https://riptutorial.com/it/home 111
Capitolo 44: La barra di amministrazione (aka "The Toolbar")
Osservazioni
La barra degli strumenti di amministrazione di WordPress è stata aggiunta nella versione 3.1 e contiene collegamenti a attività amministrative comuni e collegamenti al profilo dell'utente e ad altre informazioni di WordPress. Tuttavia, molti proprietari di siti non amano mostrare la barra degli strumenti per impostazione predefinita a tutti gli utenti che hanno effettuato l'accesso e / o desiderano aggiungere le proprie opzioni.
Examples
Rimozione della barra degli strumenti di amministrazione da tutti tranne gli amministratori
Aggiungi il seguente codice a functions.php per rimuoverlo da tutti tranne il livello utente Amministratore:
add_action('after_setup_theme', 'no_admin_bar'); function no_admin_bar() { if (!current_user_can('administrator') && !is_admin()) { show_admin_bar(false); } }
Rimozione della barra degli strumenti di amministrazione utilizzando i filtri
Un altro modo per nascondere la barra di amministrazione è aggiungere
if ( !current_user_can( 'manage_options' ) ) { add_filter( 'show_admin_bar', '__return_false' , 1000 ); }
Gli utenti che non dispongono dei privilegi per accedere alla pagina delle impostazioni, non potranno vedere la barra di amministrazione.
Come rimuovere WordPress Logo dalla barra di amministrazione
Gli sviluppatori possono utilizzare l' azione admin_bar_menu per rimuovere elementi dalla barra di amministrazione o dalla barra degli strumenti di WordPress.
add_action('admin_bar_menu', 'remove_wp_logo_from_admin_bar', 999); function remove_wp_logo_from_admin_bar( $wp_admin_bar ) {
https://riptutorial.com/it/home 112
$wp_admin_bar->remove_node('wp-logo'); }
Sopra il codice rimuove il logo WordPress dalla barra di amministrazione. Tutto quello che devi fare è incollare il codice all'interno del tuo file functions.php.
Il parametro passato al metodo remove_node è l'ID del nodo che si desidera rimuovere. Gli ID possono essere trovati nel codice sorgente HTML della pagina di WordPress con una barra degli strumenti. Ad esempio, l'ID dell'elemento li per il logo WordPress a sinistra nella barra degli strumenti è "wp-admin-bar-wp-logo":
<li id="wp-admin-bar-wp-logo" class="menupop"> … </li>
Rimuovi "wp-admin-bar-" dall'ID di li per ottenere l'ID del nodo. Da questo esempio l'ID del nodo è "wp-logo".
Puoi utilizzare gli strumenti di ispezione del browser per trovare l'ID del nodo di vari elementi o nodi sulla barra di amministrazione.
Aggiungi il tuo logo personalizzato e il link personalizzato nella pagina di accesso dell'amministratore
Puoi aggiungere ganci sotto per aggiungere il tuo logo e link per sostituire il logo wordpress predefinito.
Per aggiungere un logo personalizzato
function custom_login_logo() { echo '<style type="text/css"> h1 a { background-image: url('.get_bloginfo('template_directory').'/images/custom-logo.png) !important; background-size : 100% !important; width: 300px !important; height : 100px !important;} </style>'; } add_action('login_head', 'custom_login_logo');
Per aggiungere un collegamento logo personalizzato
add_filter( 'login_headerurl', 'custom_loginlogo_url' ); function custom_loginlogo_url($url) { return home_url(); }
Leggi La barra di amministrazione (aka "The Toolbar") online: https://riptutorial.com/it/wordpress/topic/2932/la-barra-di-amministrazione--aka--the-toolbar--
https://riptutorial.com/it/home 113
Capitolo 45: Messaggi di ricerca
Sintassi
$ the_query = new WP_Query ($ args);•$ posts_array = get_posts ($ args);•
Parametri
Parametro Descrizione
$ args
(array) Un array di argomenti necessari per una query può essere personalizzato su misura per le tue esigenze, ad esempio interrogare i post di una sola categoria, dal tipo di post personalizzato o anche interrogare determinate tassonomie
Osservazioni
Gli argomenti di query sono numerosi. La pagina del codice WP_Query () ha un elenco di parametri. Alcuni di loro sono
Parametri dell'autore•Parametri di categoria•Parametri Tag•Parametri di tassonomia•Cerca parametro•Posta e parametri della pagina•Parametri della password•Digitare i parametri•Parametri di stato•Parametri di impaginazione•Ordina e ordina i parametri•Data Parametri•Parametri di campo personalizzati•Parametri di autorizzazione•Parametri di tipo Mime•Parametri di memorizzazione nella cache•Parametro dei campi di restituzione•
Una delle cose più importanti da tenere a mente è:
Non utilizzare mai query_posts ()
query_posts()
https://riptutorial.com/it/home 114
sovrascrive la query principale e può causare problemi nel resto del tema. Ogni volta che è necessario modificare la query principale (o qualsiasi altra query) è necessario utilizzare il filtro pre_get_posts . Ciò ti consentirà di modificare la query prima dell'esecuzione.
Anche quando stai interrogando i post, dovresti sempre resettarlo usando wp_reset_postdata () . Ciò ripristinerà la variabile globale $post del ciclo di query principale e non avrai più problemi in seguito (come le categorie escluse, perché nel tuo ciclo secondario le hai escluse e hai dimenticato di reimpostare la query).
Examples
Usando l'oggetto WP_Query ()
La creazione di un'istanza separata dell'oggetto WP_Query è semplice:
$query_args = array( 'post_type' => 'post', 'post_per_page' => 10 ); $my_query = new WP_Query($query_args); if( $my_query->have_posts() ): while( $my_query->have_posts() ): $my_query->the_post(); //My custom query loop endwhile; endif; wp_reset_postdata();
Si noti che è necessario creare l'array di argomenti della query sulla specifica. Per maggiori dettagli, guarda la pagina del codice WP_Query .
Utilizzando get_posts ()
get_posts() è un wrapper per un'istanza separata di un oggetto WP_Query . Il valore restituito è una matrice di oggetto post.
global $post; $args = array( 'numberposts' => 5, 'offset'=> 1, 'category' => 1 ); $myposts = get_posts( $args ); foreach( $myposts as $post ) : setup_postdata($post); ?> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php endforeach; wp_reset_postdata(); ?>
https://riptutorial.com/it/home 115
Per maggiori informazioni consulta la pagina del codice get_posts () .
Leggi Messaggi di ricerca online: https://riptutorial.com/it/wordpress/topic/4002/messaggi-di-ricerca
https://riptutorial.com/it/home 116
Capitolo 46: Meta Box
introduzione
Semplice utilizzo di una Meta Box negli editor di contenuti wp-admin
Sintassi
_x ('Text', 'Description', 'textdomain') è usato per aggiungere una descrizione per il servizio di traduzione invece di __ ('Text', 'textdomain') che è solo la traduzione
•
_ex ('Text', 'Description', 'textdomain') è usato per echo testo tradotto con una descrizione•
Osservazioni
Il contenuto all'interno della casella di rendering può essere qualsiasi cosa. Invece di integrare direttamente i valori, puoi anche utilizzare un include con un modello PHP e utilizzare il metodo set_query_var per passare i dati ad esso. Il salvataggio avrebbe funzionato allo stesso modo.
Examples
Un semplice esempio con un input regolare e un input select
/** * Add meta box to post types. * * @since 1.0.0 */ function myplugin_add_meta_box() { // Set up the default post types/ $types = array( 'post', ); // Optional filter for adding the meta box to more types. Uncomment to use. // $types = apply_filters( 'myplugin_meta_box_types', $types ); // Add the meta box to the page add_meta_box( 'myplugin-meta-box', // Meta Box Id. Can be anything. _x( 'Custom Meta', 'Custom Meta Box', 'myplugin' ), // The title of the meta box. Translation is optional. Can just be string. 'myplugin_render_meta_box', // The render meta box function. $types, // Add the post types to which to add the meta box. 'side', // Show on the side of edit. 'high' // Show at top of edit. ); } add_action( 'add_meta_boxes', 'myplugin_add_meta_box' );
https://riptutorial.com/it/home 117
/** * Render the meta box. * * This shows examples of a basic input and a select inside a meta box. These can be anything. * * @since 1.0.0 * * @param $post WP_Post The post being edited. */ function myplugin_render_meta_box( $post ) { // Get the current post meta values for our custom meta box. $city = get_post_meta( $post->ID, 'city', true ); // True is for returning a single value. $country = get_post_meta( $post->ID, 'country', true ); // True is for returning a single value. // Add the WP Nonce field for security. wp_nonce_field( plugin_basename( __FILE__ ), 'myplugin_meta_nonce' ); ?> <p> <label for="city"> <?php _ex( 'City', 'Custom Meta Box Template', 'myplugin' ); ?> </label> <input name="city" id="city" value="<?php echo $city; ?>" /> </p> <p> <label for="country"> <?php _ex( 'Country', 'Custom Meta Box Template', 'myplugin' ); ?> </label> <select name="country" id="country"> <option value="United States" <?php selected( $country, 'United States' ); ?>><?php _ex( 'United States', 'Custom Meta Box Template', 'myplugin' ); ?></option> <option value="Mexico" <?php selected( $country, 'Mexico' ); ?>><?php _ex( 'Mexico', 'Custom Meta Box Template', 'myplugin' ); ?></option> <option value="Canada" <?php selected( $country, 'Canada' ); ?>><?php _ex( 'Canada', 'Custom Meta Box Template', 'myplugin' ); ?></option> </select> </p> <?php } /** * Save meta box data. * * @since 1.0.0 * * @param $post_id int The Id of the Post being saved. */ function myplugin_save_meta_data( $post_id ) { // Verify this is not an auto save. if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return; } // Validate the meta box nonce for security. if ( ! isset( $_POST['myplugin_meta_nonce'] ) || ! wp_verify_nonce( $_POST['myplugin_meta_nonce'], plugin_basename( __FILE__ ) ) ) { return; }
https://riptutorial.com/it/home 118
// Get the new values from the form. $city = $_POST['city']; $country = $_POST['country']; // update_post_meta will add the value if it doesn't exist or update it if it does. update_post_meta( $post_id, 'city', $city ); update_post_meta( $post_id, 'country', $country ); /* * OPTIONAL ALTERNATIVE * * Instead of just using update_post_meta, you could also check the values and * issue create/update/delete on the post meta value. */ // $current_city_value = get_post_meta( $post_id, 'city', true ); // True is for returning a single value. // // // Add the post meta if it doesn't exist. // if ( $city && '' === $city ) { // add_post_meta( $post_id, 'city', $city, true ); // True means the key is unique to the post. False is default and more than one can be added. // } // // Edit the post meta if it does exist and there is a new value. // elseif ( $city && $city != $current_city_value ) { // update_post_meta( $post_id, 'city', $city ); // } // // Delete the post meta if there is no new value. // elseif ( '' === $city && $current_city_value ) { // delete_post_meta( $post_id, 'city', $current_city_value ); // $current_city_value is optional and is used to differentiate between other values with the same key. // } } add_action( 'save_post', 'myplugin_save_meta_data' );
Leggi Meta Box online: https://riptutorial.com/it/wordpress/topic/9611/meta-box
https://riptutorial.com/it/home 119
Capitolo 47: Migrazione del sito
Sintassi
OLD_SITE - Il vecchio sito sottoposto a migrazione (ad esempio: http: // localhost / example)•NEW_SITE: il nuovo sito su cui eseguire la migrazione (ad esempio: https://example.com•
Examples
Aggiornamento delle tabelle con un nuovo URL
UPDATE wp_options SET option_value = replace(option_value, 'OLD_SITE, 'NEW_SITE') WHERE option_name = 'home' OR option_name = 'siteurl'; UPDATE wp_posts SET guid = replace(guid, 'OLD_SITE','NEW_SITE'); UPDATE wp_posts SET post_content = replace(post_content, 'OLD_SITE', 'NEW_SITE');
Leggi Migrazione del sito online: https://riptutorial.com/it/wordpress/topic/9610/migrazione-del-sito
https://riptutorial.com/it/home 120
Capitolo 48: Nozioni di base sui temi del bambino
Sintassi
template - è il nome del tema principale di WordPress, il genitore.•child-theme - è il pacchetto che sovrascrive il modello .•
Osservazioni
Ho fatto pubblicità che l'uso di un tema figlio è sempre una buona cosa, ma c'è sempre un Ma ...
Nel nostro esempio di sovrascrittura dei modelli immaginiamo che l'autore di un tema stia aggiungendo i propri miglioramenti al modello della barra laterale e ce ne sarà uno nuovo a
/themes/template/sidebar.php
<?php /** * The template for the sidebar containing the main widget area * * @link https://developer.wordpress.org/themes/basics/template-files/#template-partials */ if ( is_active_sidebar( 'sidebar-1' ) ) : ?> <aside id="secondary" class="sidebar widget-area" role="complementary"> <?php dynamic_sidebar( 'sidebar-1' ); ?> </aside><!-- .sidebar .widget-area --> <?php endif; ?>
Ora il nostro sito Web non trarrà vantaggio dalla nuova specifica role="complementary" perché il nostro tema figlio sta ancora sovrascrivendo il modello con il proprio file in /themes/child-theme/sidebar.php
È nostro dovere, in qualità di manutentori del sito Web, tenere traccia dei modelli che sovrascriviamo e, nel caso imminente di un aggiornamento, esaminare attentamente il log delle modifiche in modo da aggiornare i file del tema figlio, se necessario.
Examples
2) Lo scopo
I temi figli sono pensati per essere un modo sicuro per mantenere le personalizzazioni del modello principale senza temere di perderli su un aggiornamento del tema.
Fondamentalmente, ogni volta che vuoi modificare un file all'interno del template attivo dal tuo sito web devi chiederti " Cosa succederà quando aggiornerò il tema?
https://riptutorial.com/it/home 121
E la risposta è semplice: li perdi perché l'aggiornamento porterà una cartella di temi completamente nuova .
Diamo un'occhiata a un tema figlio come una cartella con file che sovrascriverà i file con lo stesso percorso nel tema principale. Ora portiamo alcuni esempi reali:
Definizione e requisiti
Un tema figlio viene identificato da WordPress quando esiste una directory (ad esempio child-theme ) all'interno di /wp-content/themes/ con i seguenti file:
style.css
Questo file deve iniziare con un modello di commento come questo:
/* Theme Name: Example Child Author: Me Author URI: https://example.com/ Template: example Text Domain: example-child-theme Domain Path: /languages/ */
Le cose più importanti da considerare qui sono:
Il nome del Template deve essere esattamente il nome della cartella che contiene il tema principale (ovvero lo slug del tema principale)
○
Assegna un nome al tuo tema figlio in modo che tu possa facilmente identificarlo in Dashboard (di solito basta aggiungere Child al nome del genitore, come Example Child )
○
•
index.php•
functions.php•
3) Sovrascrittura modello
L'uso più comune di un tema figlio consiste nell'override delle parti del modello. Ad esempio, una barra laterale, se abbiamo un tema con il seguente file in
/themes/template/sidebar.php
<?php /** * The sidebar containing the main widget area. * * @link https://developer.wordpress.org/themes/basics/template-files/#template-partials */ if ( ! is_active_sidebar( 'sidebar-1' ) ) { return; }?> <div id="sidebar" class="widget-area">
https://riptutorial.com/it/home 122
<?php dynamic_sidebar( 'sidebar-1' ); ?> </div>
Possiamo sicuramente aggiungere il nostro file in tema figlio (con le specifiche del primo esempio) con il seguente file
/themes/child-theme/sidebar.php
<?php /** * The sidebar containing the main widget area. */ if ( ! is_active_sidebar( 'sidebar-1' ) ) { return; }?> <div id="my-sidebar" class="my-own-awesome-class widget-area"> <div class="my-wrapper"> <?php dynamic_sidebar( 'sidebar-1' ); ?> </div> </div>
Ora my-own-awesome-class è sicuro nel tema secondario e non verrà rimosso in alcun aggiornamento del tema e WordPress sceglierà sempre un modello da temi figlio quando ne trova uno sullo stesso percorso.
Sostituzione delle risorse
Anche se non è una buona pratica, a volte è necessario sostituire risorse come file CSS o JS o librerie.
Nota che il sistema di sovrascrittura dei template di WordPress non funziona con nient'altro che i file .php , quindi quando parliamo di risorse ci riferiamo alle risorse registrate
Un esempio potrebbe essere la sostituzione della libreria jQuery con la versione desiderata. Nel file functions.php tema figlio è necessario aggiungere una funzione che rimuova la versione corrente di jQuery e aggiunga la nostra da CDN (ricordare è solo un esempio).
/** * Dequeue the jQuery script and add our own version. * * Hooked to the wp_print_scripts action, with a late priority (100), * so that it is after the script was enqueued. */ function my_own_theme_scripts() { // remove the current version wp_dequeue_script( 'jquery' ); // register my desired version wp_register_script( 'jquery', 'https://code.jquery.com/jquery-3.1.0.min.js', false, '3.1.0' ); // load my version, here or somewhere else wp_enqueue_script( 'jquery' ); } add_action( 'wp_print_scripts', 'my_own_theme_scripts' );
https://riptutorial.com/it/home 123
Leggi Nozioni di base sui temi del bambino online: https://riptutorial.com/it/wordpress/topic/6238/nozioni-di-base-sui-temi-del-bambino
https://riptutorial.com/it/home 124
Capitolo 49: Nozioni di base sulla personalizzazione (aggiungi pannello, sezione, impostazioni, controllo)
Examples
Aggiungi un pannello di personalizzazione
<?php /** * Panel: WPCustomize * * Basic Customizer panel with basic controls. * * @since 1.0.0 * @package WPC */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } // Customize function. if ( ! function_exists( 'wpc_panel_wpcustomize' ) ) { // Customize Register action. add_action( 'customize_register', 'wpc_panel_wpcustomize' ); /** * Customize Panel. * * Adds a Panel, Section with basic controls. * * @param object WP_Customize $wp_customize Instance of the WP_Customize_Manager class. * @since 1.0.0 */ function wpc_panel_wpcustomize( $wp_customize ) { // Panel: Basic. $wp_customize->add_panel( 'wpc_panel_wpcustomize', array( 'priority' => 10, 'title' => __( 'WPCustomize Panel Title', 'WPC' ), 'description' => __( 'Panel Description', 'WPC' ), 'capability' => 'edit_theme_options' ) ); } }
Aggiungi una sezione di personalizzazione con le impostazioni di base e i relativi controlli
I pannelli possono avere sezioni, le sezioni possono avere impostazioni e le impostazioni possono avere controlli. Le impostazioni vengono salvate nel database, mentre i controlli per particolari
https://riptutorial.com/it/home 125
impostazioni vengono utilizzati solo per visualizzare le relative impostazioni all'utente.
Questo codice crea una section base nel panel dall'alto. All'interno ci sono alcune settings base con controls collegati.
<?php /** * Section: Basic * * Basic Customizer section with basic controls. * * @since 1.0.0 * @package WPC */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } // Customize function. if ( ! function_exists( 'wpc_customize_panel_basic' ) ) { // Customize Register action. add_action( 'customize_register', 'wpc_customize_panel_basic' ); /** * Customize Panel. * * Adds a Panel, Section with basic controls. * * @param object WP_Customize $wp_customize Instance of the WP_Customize_Manager class. * @since 1.0.0 */ function wpc_customize_panel_basic( $wp_customize ) { // Section: Basic. $wp_customize->add_section( 'wpc_section_basic', array( 'priority' => 10, 'panel' => 'wpc_panel_wpcustomize', 'title' => __( 'Basic Section Title', 'WPC' ), 'description' => __( 'Section Description.', 'WPC' ), 'capability' => 'edit_theme_options' ) ); // Setting: Text. $wp_customize->add_setting( 'wpc_text', array( 'type' => 'theme_mod', 'default' => 'Placeholder.', 'transport' => 'refresh', // Options: refresh or postMessage. 'capability' => 'edit_theme_options', 'sanitize_callback' => 'esc_attr' ) ); // Control: Text. $wp_customize->add_control( 'wpc_text', array( 'label' => __( 'Text', 'WPC' ), 'description' => __( 'Description', 'WPC' ), 'section' => 'wpc_section_basic', 'type' => 'text' ) );
https://riptutorial.com/it/home 126
// Setting: Textarea. $wp_customize->add_setting( 'wpc_textarea', array( 'type' => 'theme_mod', 'default' => 'Placeholder textarea.', 'transport' => 'refresh', // Options: refresh or postMessage. 'capability' => 'edit_theme_options', 'sanitize_callback' => 'exc_textarea' ) ); // Control: Textarea. $wp_customize->add_control( 'wpc_textarea', array( 'label' => __( 'Textarea', 'WPC' ), 'description' => __( 'Description', 'WPC' ), 'section' => 'wpc_section_basic', 'type' => 'textarea' ) ); // Setting: Checkbox. $wp_customize->add_setting( 'wpc_checkbox', array( 'type' => 'theme_mod', 'default' => 'enable', 'transport' => 'refresh', // Options: refresh or postMessage. 'capability' => 'edit_theme_options', 'sanitize_callback' => 'wpc_sanitize_checkbox' // Custom function in customizer-sanitization.php file. ) ); // Control: Checkbox. $wp_customize->add_control( 'wpc_checkbox', array( 'label' => __( 'Checkbox', 'WPC' ), 'description' => __( 'Description', 'WPC' ), 'section' => 'wpc_section_basic', 'type' => 'checkbox' ) ); // Setting: Radio. $wp_customize->add_setting( 'wpc_radio', array( 'type' => 'theme_mod', 'default' => 'on', 'transport' => 'refresh', // Options: refresh or postMessage. 'capability' => 'edit_theme_options', 'sanitize_callback' => 'wpc_sanitize_select', // Custom function in customizer-sanitization.php file. ) ); // Control: Radio. $wp_customize->add_control( 'wpc_radio', array( 'label' => __( 'Radio', 'WPC' ), 'description' => __( 'Description', 'WPC' ), 'section' => 'wpc_section_basic', 'type' => 'radio', 'choices' => array( 'enable' => 'Enable', 'disable' => 'Disable' ) ) ); // Setting: Select. $wp_customize->add_setting( 'wpc_select', array( 'type' => 'theme_mod', 'default' => 'enable',
https://riptutorial.com/it/home 127
'transport' => 'refresh', // Options: refresh or postMessage. 'capability' => 'edit_theme_options', 'sanitize_callback' => 'wpc_sanitize_select' // Custom function in customizer-sanitization.php file. ) ); // Control: Select. $wp_customize->add_control( 'wpc_select', array( 'label' => __( 'Select', 'WPC' ), 'description' => __( 'Description', 'WPC' ), 'section' => 'wpc_section_basic', 'type' => 'select', 'choices' => array( 'enable' => 'Enable', 'disable' => 'Disable' ) ) ); } }
Leggi Nozioni di base sulla personalizzazione (aggiungi pannello, sezione, impostazioni, controllo) online: https://riptutorial.com/it/wordpress/topic/2930/nozioni-di-base-sulla-personalizzazione--aggiungi-pannello--sezione--impostazioni--controllo-
https://riptutorial.com/it/home 128
Capitolo 50: Opzioni API
introduzione
Le opzioni sono pezzi di dati che WordPress utilizza per memorizzare varie preferenze e impostazioni di configurazione. L'API delle opzioni è un modo semplice e standardizzato di memorizzazione dei dati nel database. L'API semplifica la creazione, l'accesso, l'aggiornamento e l'eliminazione delle opzioni.
Sintassi
// Crea una nuova opzione in WordPress add_option ($ option, $ value =, $ deprecated =, $ autoload = 'yes');
•
// Rimuove un'opzione dal database. delete_option ($ option);
•
// Recupera un'opzione salvata get_option ($ option, $ default = false);
•
// Aggiorna il valore di un'opzione che è stata già aggiunta. update_option ($ option, $ newvalue);
•
// Ci sono anche le versioni * _site_option () di queste funzioni, // per manipolare le opzioni a livello di rete in WordPress Multisito
•
// Crea una nuova opzione di rete add_site_option ($ option, $ value =, $ deprecated =, $ autoload = 'yes');
•
// Rimuove un'opzione di rete delete_site_option ($ option);
•
// Recupera un'opzione di rete salvata get_site_option ($ option, $ default = false);
•
// Aggiorna il valore di un'opzione che è stata già aggiunta. update_site_option ($ option, $ newvalue);
•
Osservazioni
L'API Options è un modo semplice e standardizzato di lavorare con i dati presenti nella tabella delle opzioni del database MySQL. L'API semplifica la creazione, la lettura, l'aggiornamento e l'eliminazione delle opzioni.
Examples
https://riptutorial.com/it/home 129
get_option
la funzione get_option viene utilizzata per recuperare un valore dalla tabella delle opzioni in base al nome dell'opzione.
È possibile utilizzare il seguente codice per ottenere l'indirizzo email di un amministratore del sito WordPress.
<?php echo get_option('admin_email'); ?>
get_option() ha un secondo argomento opzionale, che consente di impostare un valore predefinito da restituire nel caso in cui l'opzione richiesta non sia impostata. Per impostazione predefinita, questo argomento è false .
Per recuperare una stringa di testo e utilizzare una stringa boilerplate se il testo non è impostato nella tabella delle opzioni, puoi eseguire questa operazione:
<?php get_option( 'my_text', "I don't have anything written. Yet." ); ?>
add_option
add_option function ins utilizzati per inserire nuove righe nella tabella delle opzioni.
Ciò inserirà una nuova riga nella tabella delle opzioni con il nome dell'opzione some_option_name e valore come some_option_value
<?php add_option( 'some_option_name', 'some_option_value' ); ?>
delete_option
La funzione delete_option è usata per cancellare un'opzione dalla tabella delle opzioni.
Questo eliminerà my_custom_option dalla tabella delle opzioni.
<?php delete_option( 'my_custom_option' ); ?>
update_option
La funzione update_option viene utilizzata per aggiornare un valore già esistente nella tabella delle opzioni. Se l'opzione non esiste, l'opzione verrà aggiunta con il valore dell'opzione.
Questo imposterà lo stato di commento predefinito a 'chiuso':
update_option( 'default_comment_status', 'closed' );
Leggi Opzioni API online: https://riptutorial.com/it/wordpress/topic/7854/opzioni-api
https://riptutorial.com/it/home 130
Capitolo 51: Post formati
Osservazioni
I seguenti formati di post sono disponibili per gli utenti tra cui scegliere, se il tema ne consente il supporto.
Si noti che mentre la voce del contenuto del post non cambia, il tema può utilizzare questa scelta utente per visualizzare il post in modo diverso in base al formato scelto. Ad esempio, un tema potrebbe lasciare fuori la visualizzazione del titolo per un post di "Stato". Il modo in cui le cose vengono visualizzate dipende interamente dal tema, ma ecco alcune linee guida generali.
a parte - In genere in stile senza titolo. Simile a un aggiornamento della nota di Facebook.•galleria - Una galleria di immagini. Post probabilmente conterrà uno shortcode della galleria e avrà allegati di immagini.
•
link - Un collegamento ad un altro sito. I temi potrebbero voler utilizzare il primo tag nel contenuto del post come link esterno per quel post. Un approccio alternativo potrebbe essere se il post consiste solo di un URL, quindi quello sarà l'URL e il titolo (post_title) sarà il nome associato all'ancora per esso.
•
image - Una singola immagine. Il primo tag nel post potrebbe essere considerato l'immagine. In alternativa, se il post consiste solo di un URL, questo sarà l'URL dell'immagine e il titolo del post (post_title) sarà l'attributo title per l'immagine.
•
quote - Una citazione. Probabilmente conterrà un blocco con il contenuto del preventivo. In alternativa, la citazione potrebbe essere solo il contenuto, con la fonte / autore come titolo.
•
stato: un breve aggiornamento di stato, simile a un aggiornamento di stato di Twitter.•video - Una singola playlist di video o video. Il primo tag o oggetto / incorporato nel contenuto del post potrebbe essere considerato il video. In alternativa, se il post consiste solo di un URL, questo sarà l'URL del video. Può contenere anche il video come allegato al post, se il supporto video è abilitato sul blog (come tramite un plugin). audio: un file audio o una playlist. Potrebbe essere usato per il podcasting.
•
chat - Una trascrizione della chat•
Examples
Aggiunta di un post al tema
Aggiungi post-formati alla "pagina" post_type
add_post_type_support( 'page', 'post-formats' );
Il prossimo esempio registra il tipo di post personalizzato "my_custom_post_type" e aggiunge Post Formats.
Registra il tipo di messaggio personalizzato "my_custom_post_type"
https://riptutorial.com/it/home 131
add_action( 'init', 'create_my_post_type' ); function create_my_post_type() { register_post_type( 'my_custom_post_type', array( 'labels' => array( 'name' => __( 'Products' ) ), 'public' => true ) ); }
Aggiungi post-formati a post_type 'my_custom_post_type'
add_post_type_support( 'my_custom_post_type', 'post-formats' );
Oppure nella funzione register_post_type (), aggiungi "post-formati", nella matrice di parametri "supports". Il prossimo esempio è equivalente a sopra uno.
Registra il tipo di messaggio personalizzato "my_custom_post_type" con il parametro "supports"
add_action( 'init', 'create_my_post_type' ); function create_my_post_type() { register_post_type( 'my_custom_post_type', array( 'labels' => array( 'name' => __( 'Products' ) ), 'public' => true, 'supports' => array('title', 'editor', 'post-formats') ) ); }
Aggiungi supporto tematico per post
Chiamata di funzione
add_theme_support( 'post-formats' )
Leggi Post formati online: https://riptutorial.com/it/wordpress/topic/6075/post-formati
https://riptutorial.com/it/home 132
Capitolo 52: Proteggi la tua installazione
Osservazioni
I siti web di WordPress sono spesso violati. Questo argomento è per le tecniche e le pratiche che aumentano la sicurezza della tua installazione di WordPress oltre a quanto ottenuto in un'installazione di base.
Oltre a questo argomento, un altro buon punto da leggere su come proteggere un'installazione di WordPress è la pagina di WordPress Codex di Hardening .
Examples
Disattiva Editor di file
L'editor di file fornito con WordPress è un rischio per la sicurezza. Se un utente malintenzionato ottiene l'accesso amministrativo al tuo sito Web WordPress, sarà facilmente in grado di inserire codice dannoso in file di temi e plug-in. È anche un rischio per i clienti che non sanno cosa stanno facendo. Una volta i due punti errati nell'editor di file possono rompere un sito e renderlo inaccessibile dal browser.
Nel tuo file wp-config.php WordPress, disabilita l'editor di file aggiungendo la seguente riga di codice.
define( 'DISALLOW_FILE_EDIT', true );
Quella linea avrà l'effetto desiderato se aggiunta al file functions.php del tuo tema, ma è meglio aggiungere a wp-config.php .
Se stai usando WordPress CLI per installare WordPress puoi usare il seguente comando per creare un file wp-config.php con la modifica dei file disabilitata.
/* declare variables beforehand or substitute strings in */ wp core config --dbname="$MYSQL_DBNAME" --dbuser="$MYSQL_USERNAME" --dbpass="$MYSQL_PASS" --dbprefix="$WP_DBPREFIX"_ --locale=en_AU --extra-php <<PHP define( 'DISALLOW_FILE_EDIT', true ); PHP
Questo metodo è utile se si installa WordPress con uno script.
Muovi wp-config.php
Le informazioni più sensibili di un'installazione di WordPress sono memorizzate nel file wp-config.php . Se un hacker ottiene l'accesso a questo file, ha il controllo totale del tuo sito web.
Di default wp-config.php è memorizzato nella cartella di installazione di WordPress. Per rendere
https://riptutorial.com/it/home 133
questo file più difficile da rubare, puoi spostarlo dalla cartella accessibile web. Se lo sposti solo una cartella sopra, WordPress lo troverà automaticamente. Se sposti wp-config.php in una posizione diversa, crea un file vuoto chiamato wp-config.php nella cartella di installazione di WordPress. Quindi aggiungere il seguente:
define('ABSPATH', dirname(__FILE__) . '/'); // '../../wp-config.php' defines location two folders above installation folder. // Substitute with actual location of wp-config.php file as necessary. require_once(ABSPATH . '../../wp-config.php');
Potrebbe essere necessario rendere eseguibile php nella cartella in cui si inserisce wp-config.php. Dovresti rendere eseguibile php nel minor numero possibile di cartelle. Un buon sistema mette l'installazione di WordPress in /path/to/wordpress/install/ e la configurazione in /path/to/wordpress/config . Assicurati che la cartella di configurazione non sia accessibile dal Web e non inserisca altre informazioni riservate in /path/to/ o più in alto nella gerarchia delle cartelle. In questo caso dovresti scrivere una riga simile alla seguente nel tuo php.ini :
open_basedir = "/path/to/wordpress/install/;/path/to/wordpress/config"
Questa tecnica è controversa e alcune persone non pensano che migliori la sicurezza. Un'ampia discussione sull'argomento può essere letta in questa domanda WordPress StackExchange .
Imposta un prefisso personalizzato per le tabelle di WordPress
Quando installi WordPress sul tuo server, lo script di installazione inserirà un prefisso davanti a tutti i nomi delle tabelle MySQL di WordPress. Questo prefisso è impostato su "wp_" per impostazione predefinita. La tabella dei post di WordPress verrà chiamata wp_posts ad esempio. Cambiando il prefisso della tabella è possibile creare un po 'di sicurezza per oscurità. In questo modo, quando un hacker tenta di eseguire attacchi SQL injection, dovrà indovinare il prefisso del proprio tavolo piuttosto che usare solo "wp_". Puoi impostare questo prefisso per essere quello che vuoi.
Imposta prefisso nella nuova installazione di WordPress
Se si utilizza la famosa installazione di 5 minuti, cambiare il prefisso in campo durante l'installazione.
https://riptutorial.com/it/home 134
Se l'installazione avviene tramite CLI di WordPress, utilizzare il seguente comando:
// set other variables above, or substitute your strings in. WP_DBPREFIX=foo wp core config --dbname="$MYSQL_DBNAME" --dbuser="$MYSQL_USERNAME" --dbpass="$MYSQL_PASS" --dbprefix="$WP_DBPREFIX"_ --locale=en_AU
Cambia prefisso nell'installazione esistente
Cambiare il prefisso è un po 'più difficile. In primo luogo utilizzare un programma FTP come FileZilla per modificare il file wp-config.php . Cambia la voce $table_prefix = 'wp_'; a $table_prefix = 'foo_'; sostituendo 'pippo' per il prefisso desiderato.
Successivamente dovremo modificare il database. Se hai accesso a phpMyAdmin, effettua il login e fai quanto segue:
Seleziona il database di WordPress •
https://riptutorial.com/it/home 135
Seleziona tutte le tabelle e nel menu a discesa seleziona sostituisci prefisso tabella. •
In "Da" digita "wp_". In "A" digita il prefisso, "pippo_" in questo esempio e premi "Invia". •
Le tabelle dovrebbero ora assomigliare a questo: •
Se non è possibile utilizzare phpMyAdmin, utilizzare il seguente comando MySQL:
https://riptutorial.com/it/home 136
RENAME table `wp_comments` TO `foo_comments`
Avrai bisogno di eseguire quel comando per ogni tabella, sostituendo 'commenti' per gli altri nomi di tabelle.
Quindi dobbiamo modificare alcune voci in alcune tabelle. Esegui questa query sulla tabella 'foo_options'
SELECT * FROM foo_options WHERE option_name LIKE '%user_roles%'
Dovrebbe apparire una voce con nome_opzione di "wp_user_roles". In quella voce cambia la voce 'option_name' da wp_user_roles a foo_user_roles .
Quindi apri la tabella "foo_usermeta" e trova tutte le voci con "wp_" in primo piano.
e cambialo in "foo_". Il numero di voci che devi modificare dipenderà dal numero di utenti che hai.
https://riptutorial.com/it/home 137
Questo dovrebbe essere tutto ciò che serve per cambiare il prefisso in un'installazione esistente
Leggi Proteggi la tua installazione online: https://riptutorial.com/it/wordpress/topic/7594/proteggi-la-tua-installazione
https://riptutorial.com/it/home 138
Capitolo 53: Rimuovi interruzioni di riga automatiche dal contenuto e dall'estratto
introduzione
Per i siti che si basano su HTML a mano nell'editor o in estratti, quelli che si desidera codificare, le interruzioni di riga automatiche possono essere un fastidio. Puoi disabilitarli rimuovendo questi filtri.
Osservazioni
Questi devono essere eseguiti direttamente in un file di inclusione. Che si tratti di functions.php o di un altro file, questi non possono essere racchiusi in un hook. Non funzioneranno su init o su qualsiasi altro che ho trovato finora.
Possono anche essere inclusi direttamente in un modello come page.php da eseguire solo per quel modello.
NOTA: NON INCLUDERE QUESTO IN UN TEMA DISTRIBUITO O IN UN PLUGIN (a meno che non sia disabilitato di default, come non includere il file di inclusione in cui è inserito, a meno che l'utente non specifichi).
Questa è una cattiva pratica da includere in un sito che non controlli perché può e interromperà l'output di altri temi o plugin.
Examples
Rimuovi i filtri
// Remove the auto-paragraph and auto-line-break from the content remove_filter( 'the_content', 'wpautop' ); // Remove the auto-paragraph and auto-line-break from the excerpt remove_filter( 'the_excerpt', 'wpautop' );
Funzione per rimuovere i filtri
/** * Remove the automatic line breaks from content and excerpts. * * @since 1.0.0 */ function remove_content_auto_line_breaks() { // Remove the auto-paragraph and auto-line-break from the content remove_filter( 'the_content', 'wpautop' );
https://riptutorial.com/it/home 139
// Remove the auto-paragraph and auto-line-break from the excerpt remove_filter( 'the_excerpt', 'wpautop' ); } // Execute the function remove_content_auto_line_breaks();
Leggi Rimuovi interruzioni di riga automatiche dal contenuto e dall'estratto online: https://riptutorial.com/it/wordpress/topic/9614/rimuovi-interruzioni-di-riga-automatiche-dal-contenuto-e-dall-estratto
https://riptutorial.com/it/home 140
Capitolo 54: Rimuovi la versione da Wordpress e Stylesheets
introduzione
Per rendere più difficile agli altri hackerare il tuo sito web, puoi rimuovere il numero di versione di WordPress dal tuo sito, i tuoi css e js. Senza quel numero non è possibile vedere se non si esegue la versione corrente per sfruttare i bug delle versioni precedenti.
Inoltre, può migliorare la velocità di caricamento del tuo sito, perché senza le stringhe di query nell'URL i file css e js possono essere memorizzati nella cache.
Sintassi
add_filter ($ tag, $ function_to_add, $ priority, $ accepted_args)•
Parametri
Parametro Dettagli
$ tag (stringa richiesta) Nome del filtro a cui è agganciato $ function_to_add
$ function_to_add
(richiesto chiamabile) Nome della funzione che viene eseguita quando viene applicato il filtro
$ priorità(int opzionale) luogo di $ function_to_add tra altre funzioni in un'azione (default = 10)
$ accepted_args(int opzionale) Numero di parametri che $ function_to_add accetta (default = 1)
Osservazioni
Destinato a migliorare la velocità e la sicurezza del sito.
Examples
Rimuovi i numeri di versione da css / js
Basta aggiungere questa funzione al tuo functions.php. Rimuoverà la versione da tutti i file js e css accodati.
https://riptutorial.com/it/home 141
function remove_cssjs_ver( $src ) { if( strpos( $src, '?ver=' ) ) $src = remove_query_arg( 'ver', $src ); return $src; } add_filter( 'style_loader_src', 'remove_cssjs_ver', 999 ); add_filter( 'script_loader_src', 'remove_cssjs_ver', 999 );
Rimuovi i numeri di versione da WordPress
Se lo aggiungi alle tue funzioni.php, rimuove il numero di versione di WordPress dal feed RSS e dall'intestazione.
function remove_wordpress_ver() { return ''; } add_filter('the_generator', 'remove_wordpress_ver', 999);
Leggi Rimuovi la versione da Wordpress e Stylesheets online: https://riptutorial.com/it/wordpress/topic/6218/rimuovi-la-versione-da-wordpress-e-stylesheets
https://riptutorial.com/it/home 142
Capitolo 55: Scansioni di script
Sintassi
wp_enqueue_script ($ handle, $ src, $ deps, $ ver, $ in_footer)•
Parametri
Parametro Dettagli
$ maniglia (stringa) (obbligatorio) Nome dello script. Dovrebbe essere unico.
$ src(stringa) (Facoltativo) URL completo dello script o percorso dello script relativo alla directory principale di WordPress. Valore predefinito: falso
$ dipendenze
(array) (Facoltativo) Un array di script registrato gestisce questo script dipende da. Valore predefinito: array ()
$ ver
(stringa | bool | null) (Facoltativo) Stringa che specifica il numero di versione dello script, se ne ha uno, che viene aggiunto all'URL come stringa di query per scopi di busting della cache. Se la versione è impostata su false, viene aggiunto automaticamente un numero di versione uguale alla versione di WordPress installata corrente. Se impostato su null, non viene aggiunta alcuna versione. Valore predefinito: falso
$ in_footer(bool) (Opzionale) Se accodare lo script prima di </body> anziché in <head> . Valore predefinito: falso
Examples
Scoraggiando gli script in functions.php
Se vuoi aggiungere lo script custom.js che si trova nella cartella js/ del tuo tema, dovrai accodarlo. In functions.php aggiungi
<?php add_action( 'after_setup_theme', 'yourtheme_theme_setup' ); if ( ! function_exists( 'yourtheme_theme_setup' ) ) { function yourtheme_theme_setup() { add_action( 'wp_enqueue_scripts', 'yourtheme_scripts' ); add_action( 'admin_enqueue_scripts', 'yourtheme_admin_scripts' ); } }
https://riptutorial.com/it/home 143
if ( ! function_exists( 'yourtheme_scripts' ) ) { function yourtheme_scripts() { wp_enqueue_script( 'yourtheme_custom', get_template_directory_uri().'/js/custom.js', array( 'jquery' ), '1.0.0', true ); } } if ( ! function_exists( 'yourtheme_admin_scripts' ) ) { function yourtheme_admin_scripts() { wp_enqueue_script( 'yourtheme_custom', get_template_directory_uri().'/js/custom.js', array( 'jquery-ui-autocomplete', 'jquery' ), '1.0.0', true ); } }
Script Enqueue solo per IE
add_action( 'wp_enqueue_scripts', 'enqueue_my_styles_and_scripts' ); /** * Enqueue scripts (or styles) conditionally. * * Load scripts (or stylesheets) specifically for IE. IE10 and above does * not support conditional comments in standards mode. * * @link https://gist.github.com/wpscholar/4947518 * @link https://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx */ function enqueue_my_styles_and_scripts() { // Internet Explorer HTML5 support wp_enqueue_script( 'html5shiv',get_template_directory_uri().'/js/html5shiv.js', array(), '3.7.3', false); wp_script_add_data( 'html5shiv', 'conditional', 'lt IE 9' ); // Internet Explorer 8 media query support wp_enqueue_script( 'respond', get_template_directory_uri().'/js/respond.js', array(), '1.4.2', false); wp_script_add_data( 'respond', 'conditional', 'lt IE 9' ); }
Scoraggiando script in modo condizionale per pagine specifiche
Puoi utilizzare operatori condizionali in WordPress per accodare script su pagine specifiche del tuo sito web.
function load_script_for_single_post(){ if(is_single()){ wp_enqueue_script( 'some', get_template_directory_uri().'/js/some.js', array('jquery),
https://riptutorial.com/it/home 144
'1.0.0', false ); } } add_action('wp_enqueue_scripts','load_script_for_single_post');
Nell'esempio precedente, se la pagina web corrente è single post, lo script verrà accodato. Altrimenti la funzione wp_enqueue_script non verrà eseguita.
Leggi Scansioni di script online: https://riptutorial.com/it/wordpress/topic/1103/scansioni-di-script
https://riptutorial.com/it/home 145
Capitolo 56: Shortcode con attributo
Sintassi
add_shortcode ('your_short_code', 'your_function_name');•
Parametri
parametri Discription e utilizzo
$ tag(stringa) (obbligatorio) Tag shortcode da cercare nel contenuto del post Predefinito: Nessuno
$ func(richiamabile) (obbligatorio) Hook da eseguire quando viene trovato lo shortcode Predefinito: Nessuno
Osservazioni
IMPORTANTE: non utilizzare camelCase o UPPER-CASE per i propri attributi
Puoi generare uno shortcode con l'attributo Qui
Examples
Esempi di Shortcode
Gli shortcode di WordPress sono stati introdotti in 2.5
Ecco un esempio di shortcode
[button]
per usare lo shortcode direttamente nel tema devi usare do_shortcode()
<?php echo do_shortcode('[button]'); ?>
Per personalizzare il pulsante, potremmo semplicemente aggiungere qualcosa come:
[button type="twitter"]
O per renderlo ancora migliore, potremmo usare uno shortcode che racchiude:
[button type="twitter"]Follow me on Twitter![/button]
https://riptutorial.com/it/home 146
Creazione di uno shortcode autochiudente
Lo shortcode più semplice è quello a chiusura automatica. Creeremo un semplice link al nostro account Twitter e quindi lo aggiungeremo in un post sul blog. Tutto il codice va in functions.php , che si trova in /wp-content/themes/your-theme/ . Se non ne hai uno, crealo e inserisci il codice.
<?php function button_shortcode() { return '<a href="http://twitter.com/rupomkhondaker" class="twitter-button">Follow me on Twitter!</a>"'; } add_shortcode('button', 'button_shortcode'); ?>
Utilizzo: [button]
Creazione di uno shortcode autochiudente con parametri
Creazione di uno shortcode autochiudente con parametri
<?php function button_shortcode( $type ) { extract( shortcode_atts( array( 'type' => 'value' ), $type ) ); // check what type user entered switch ($type) { case 'twitter': return '<a href="http://twitter.com/rupomkhondaker" class="twitter-button">Follw me on Twitter!</a>'; break; case 'rss': return '<a href="http://example.com/rss" class="rss-button">Subscribe to the feed!</a>' break; } } add_shortcode( 'button', 'button_shortcode' ); ?>
Ora puoi scegliere quale pulsante visualizzare definendo il tipo nel tuo shortcode.
[button type="twitter"] [button type="rss"]
Creare un shortcode che racchiude
accludere shortcode
https://riptutorial.com/it/home 147
Lo shortcode che lo racchiude ti consente di incorporare contenuti all'interno del tuo shortcode, proprio come il BBCode, se lo hai mai usato.
<?php function button_shortcode( $attr, $content = null ) { return '<a href="http://twitter.com/filipstefansson" class="twitter-button">' . $content . '</a>'; } add_shortcode('button', 'button_shortcode'); ?>
Per utilizzare questo shortcode, incorporare il testo che si desidera utilizzare in questo modo:
[button]Follow me on Twitter![/button]
Per rendere questo pulsante ancora migliore, potremmo aggiungere parametri proprio come abbiamo fatto nell'esempio precedente.
<?php function button_shortcode( $atts, $content = null ) { extract( shortcode_atts( array( 'account' => 'account', 'style' => 'style' ), $atts ) ); return '<a href="http://twitter.com/' . esc_attr($account) . '" class="twitter-button ' . esc_attr($style) . '">' . $content . '</a>'; } add_shortcode('button', 'button_shortcode'); ?>
Uso:
[button account="rupomkhondaker" style="simple"]Follow me on Twitter![/button]
Shortcode in Widget
Per impostazione predefinita, WordPress non supporta gli shortcode nei widget della sidebar. Espande solo gli shortcode nel contenuto di un Post, Pagina o tipo di messaggio personalizzato. Per aggiungere il supporto shortcode ai widget della barra laterale, puoi installare un plug-in o utilizzare il codice seguente:
add_filter( 'widget_text', 'shortcode_unautop' ); add_filter( 'widget_text', 'do_shortcode' );
È importante aggiungere queste righe in questo ordine. La prima riga impedisce a WordPress di trasformare le interruzioni di riga in tag di paragrafo, poiché ciò impedisce il funzionamento dei codici di accesso. La seconda linea è quella che fa funzionare gli shortcode.
Leggi Shortcode con attributo online: https://riptutorial.com/it/wordpress/topic/6291/shortcode-con-attributo
https://riptutorial.com/it/home 148
Capitolo 57: Shortcodes
Examples
Introduzione Shortcode
I codici brevi sono utili quando si desidera poter aggiungere elementi più complessi in linea nel normale editor di contenuti.
Uno shortcode nel modo più semplice sarebbe simile a questo:
function my_shortcode( ){ return "This is a shortcode"; } add_shortcode( 'my_shortcode', 'my_shortcode' );
Emetterebbe il testo "This is a shortcode" e lo useresti scrivendo [my_shortcode] nell'editor di contenuti.
Pulsante shortcode
Ecco un esempio di un breve codice pulsante:
<?php function my_button_shortcode( $atts ) { // Parse the input attributes and assgn default values for the // attributes that are not specified on the shortcode $a = shortcode_atts( array( 'id' => '', 'url' => '#', 'class' => '', 'text' => '' ), $atts ); // Open the anchor tag and add role=button for better accessibility $btn_html = '<a role="button"'; // Add the href(link) attribute $btn_html .= ' href="' . $a['url'] . '"'; // Add id attribute to output if specified if ( !empty( $a['id'] ) ) { $btn_html .= ' id="' . $a['id'] . '"'; } $btn_classes = 'button'; // Add class attribute to output $btn_html .= ' class="button ' . ( !empty(a['class']) ? $a['class'] : '' ) . '"'; // Close opening anchor tag
https://riptutorial.com/it/home 149
$btn_html .= '>'. // Add button text $a['text']. // Add closing anchor tag '</a>'."\n"; return $btn_html; } add_shortcode( 'button', 'my_button_shortcode' );
Questo shortcode può essere utilizzato digitando [button url="/my-other-page" id="my-other-page-button" class="dark" text="Click me!"] Nell'editor e verrà visualizzato il seguendo HTML:
<a role="button" href="/my-other-page" id="my-other-page-button" class="button dark">Click me!</a>
Leggi Shortcodes online: https://riptutorial.com/it/wordpress/topic/6070/shortcodes
https://riptutorial.com/it/home 150
Capitolo 58: Sicurezza in WordPress - Escaping
Sintassi
esc_html (stringa $ testo)•esc_url (stringa $ url, matrice $ protocolli, stringa $ _context)•esc_js (stringa $ testo)•wp_json_encode (mixed $ data, int $ options, int $ depth = 512)•esc_attr (stringa $ testo)•esc_textarea (stringa $ testo)•
Osservazioni
La sicurezza dovrebbe essere sempre presente quando si sviluppa. Senza sicurezza un'app è aperta a vari attacchi come Iniezioni SQL, XSS, CSRF, RFI ecc che possono portare a seri problemi.
I dati non attendibili provengono da molte fonti (utenti, siti di terze parti, il proprio database !, ...) e tutto deve essere convalidato sia in input che in output. (Fonte: codice WordPress)
I dati devono essere convalidati, disinfettati o salvati in base all'utilizzo e allo scopo.
Convalidare è garantire che i dati che hai richiesto all'utente corrispondano a ciò che hanno inviato. (Fonte: codice WordPress)
La sanitizzazione è un po 'più liberale nell'accettare i dati degli utenti. Possiamo ricorrere all'utilizzo di questi metodi quando esiste una gamma di input accettabili. (Fonte: codice WordPress)
Per fuggire è necessario prendere i dati che potresti già avere e proteggerli prima di renderli per l'utente finale. (Fonte: codice WordPress)
Examples
sfuggire i dati nel codice HTML
esc_html deve essere utilizzato ogni volta che si generano dati all'interno del codice HTML.
<h4><?php echo esc_html( $title ); ?></h4>
sfuggire a un URL
https://riptutorial.com/it/home 151
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">Home</a> <img src="<?php echo esc_url( $user_picture_url ); ?>" />
dati di escape nel codice js
esc_js() è progettato per essere utilizzato per JS inline, all'interno di un attributo tag.
Per i dati all'interno di un tag <script> usa wp_json_encode() .
<input type="text" onfocus="if( this.value == '<?php echo esc_js( $fields['input_text'] ); ?>' ) { this.value = ''; }" name="name">
wp_json_encode() codifica una variabile in JSON, con alcuni controlli di wp_json_encode() .
Si noti che wp_json_encode() include automaticamente le virgolette di delimitazione delle stringhe.
<?php $book = array( "title" => "JavaScript: The Definitive Guide", "author" => "Stack Overflow", ); ?> <script type="text/javascript"> var book = <?php echo wp_json_encode($book) ?>; /* var book = { "title": "Security in WordPress", "author" => "Stack Overflow", }; */ </script>
o
<script type="text/javascript"> var title = <?php echo wp_json_encode( $title ); ?>; var content = <?php echo wp_json_encode( $content ); ?>; var comment_count = <?php echo wp_json_encode( $comment_count ); ?>; </script>
attributi di fuga
<input type="text" value="<?php echo esc_attr($_POST['username']); ?>" />
dati di fuga in textarea
<textarea><?php echo esc_textarea( $text ); ?></textarea>
Leggi Sicurezza in WordPress - Escaping online: https://riptutorial.com/it/wordpress/topic/6115/sicurezza-in-wordpress---escaping
https://riptutorial.com/it/home 152
Capitolo 59: Sicurezza in WordPress - Sanitizzazione
Sintassi
sanitize_text_field (stringa $ str)•sanitize_title (stringa $ titolo, stringa $ fallback_title, stringa $ contesto)•sanitize_email (stringa $ email)•sanitize_html_class (stringa $ class, stringa $ fallback)•sanitize_file_name (stringa $ nome)•sanitize_user (stringa $ username, boolean $ strict)•
Osservazioni
La sicurezza dovrebbe essere sempre presente quando si sviluppa. Senza sicurezza un'app è aperta a vari attacchi come Iniezioni SQL, XSS, CSRF, RFI ecc che possono portare a seri problemi.
I dati non attendibili provengono da molte fonti (utenti, siti di terze parti, il proprio database !, ...) e tutto deve essere convalidato sia in input che in output. (Sourse: WordPress Codex)
I dati devono essere convalidati, disinfettati o salvati in base all'utilizzo e allo scopo.
Convalidare è garantire che i dati che hai richiesto all'utente corrispondano a ciò che hanno inviato. (Sourse: WordPress Codex)
La sanitizzazione è un po 'più liberale nell'accettare i dati degli utenti. Possiamo ricorrere all'utilizzo di questi metodi quando esiste una gamma di input accettabili. (Sourse: Wordpress Codex)
Per fuggire è necessario prendere i dati che potresti già avere e proteggerli prima di renderli per l'utente finale. (Sourse: WordPress Codex)
Examples
Disinfetta il campo di testo
$title = sanitize_text_field( $_POST['title'] );
Sanificare il titolo
Il valore restituito è inteso per essere adatto per l'uso in un URL, non come un titolo leggibile dall'uomo. Usa invece sanitize_text_field.
https://riptutorial.com/it/home 153
$new_url = sanitize_title($title);
Sanificare l'e-mail
$sanitized_email = sanitize_email(' [email protected]! ');
Sanitizza la classe html
$post_class = sanitize_html_class( $post->post_title ); echo '<div class="' . $post_class . '">';
Sanitizza il nome del file
$incfile = sanitize_file_name($_REQUEST["file"]); include($incfile . ".php");
Senza sanificare il nome del file, un utente malintenzionato potrebbe semplicemente passare http: // attacker_site / malicous_page come input ed eseguire qualsiasi codice nel server.
Disinfetta il nome utente
$user = sanitize_user("attacker username<script>console.log(document.cookie)</script>");
Il valore di $ user dopo sanitize è "nome utente dell'attaccante"
Leggi Sicurezza in WordPress - Sanitizzazione online: https://riptutorial.com/it/wordpress/topic/6348/sicurezza-in-wordpress---sanitizzazione
https://riptutorial.com/it/home 154
Capitolo 60: sidebars
Sintassi
register_sidebar ($ args)•get_sidebar (stringa $ nome = null)•
Parametri
Parametro Dettagli
$ args(string | array) (opzionale) Costruisce barra laterale sulla base dei name e id vvalues
nome $* (stringa) (Facoltativo) Il nome della barra laterale specializzata. Valore predefinito: null
Osservazioni
Le opzioni di argomento sono:
nome - Nome della sidebar (predefinito: localizzato 'Sidebar' e ID numerico) .•id - ID sidebar - Deve essere tutto in lettere minuscole, senza spazi (predefinito: un ID numerico auto-incrementato) . Se non imposti il valore dell'argomento id, riceverai i messaggi E_USER_NOTICE in modalità debug, a partire dalla versione 4.2.
•
descrizione : descrizione del testo di cosa / dove si trova la barra laterale. Mostrato sullo schermo di gestione del widget. (Dal 2,9) (predefinito: vuoto)
•
class - La classe CSS da assegnare alla sidebar nella sezione Aspetto -> Widget admin. Questa classe apparirà solo nella sorgente della pagina di amministrazione di WordPress Widget. Non sarà incluso nel front-end del tuo sito web. Nota : la sidebar valori verrà anteposta al valore della classe. Ad esempio, una classe di tal avrà come risultato un valore di classe di sidebar-tal . (predefinito: vuoto) .
•
before_widget - HTML da inserire prima di ogni widget (predefinito: <li id="%1$s" class="widget %2$s"> ) Nota : utilizza sprintf per la sostituzione variabile
•
after_widget - HTML da inserire dopo ogni widget (predefinito: </li>\n ) .•before_title : HTML da inserire prima di ogni titolo (predefinito: <h2 class="widgettitle"> ) .•after_title - HTML da inserire dopo ogni titolo (predefinito: </h2>\n ) .•
Examples
Registrazione delle barre laterali
Nel tuo functions.php puoi registrare nuove barre laterali con questo codice
https://riptutorial.com/it/home 155
/** * Registers sidebars * * @param array Array with default or specified array values * @since 1.0.0 */ if ( function_exists( 'register_sidebar' ) ) { register_sidebar( array ( 'name' => esc_html__( 'Primary Sidebar', 'mytheme'), 'id' => 'primary-widget-area', 'description' => esc_html__( 'The Primary Widget Area', 'mytheme'), 'before_widget' => '<div id="%1$s" class="widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<div class="sidebar-widget-heading"><h3>', 'after_title' => '</h3></div>', ) ); register_sidebar( array ( 'name' => esc_html__( 'Secondary Sidebar', 'mytheme'), 'id' => 'secondary-widget-area', 'description' => esc_html__( 'The Secondary Widget Area', 'mytheme'), 'before_widget' => '<div id="%1$s" class="widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<div class="sidebar-widget-heading"><h3>', 'after_title' => '</h3></div>', ) ); }
Puoi aggiungere tutte le barre laterali che vuoi.
Ottieni Sidebar
Puoi anche creare il tuo file della barra laterale nel tema per chiamarlo su modelli diversi. Copia e incolla sidebar.php del tema corrente e cambia il nome (es. Sidebar-book.php)
Nel modello puoi chiamare questa barra laterale usando get_sidebar('book') . Usando questo puoi chiamare diverse barre laterali su pagine diverse.
Leggi sidebars online: https://riptutorial.com/it/wordpress/topic/6293/sidebars
https://riptutorial.com/it/home 156
Capitolo 61: Stili accattivanti
Sintassi
wp_enqueue_style ($ handle, $ src, $ dipendenza, $ versione, $ media);1.
Parametri
Parametro Dettagli
$handle (Stringa) (Obbligatorio) Nome univoco per il foglio di stile.
$src(String) (Facoltativo) URL del foglio di stile che verrà utilizzato all'interno dell'attributo src del tag di collegamento .
$deps(String) (Facoltativo) Una serie di fogli di stile gestiti da questo foglio di stile dipende da.
$ver(String) (Facoltativo) Stringa che specifica la versione del foglio di stile del foglio di stile.
$media(Stringa) (Facoltativo) Il supporto per cui questo foglio di stile è stato creato. es. "tutto", "stampa", "schermo" ecc
Examples
Compreso il file css interno con un altro file css come dipendenza
function themeSlug_enqueue_scripts() { wp_enqueue_style( 'themeSlug-reset', get_template_directory_uri() .'/css/reset.css', '1.0.0' ); wp_enqueue_style( 'themeSlug-style', get_template_directory_uri() .'/style.css', 'themeSlug-reset', '1.0.0'); } add_action('wp_enqueue_scripts', 'themeSlug_enqueue_scripts');
Compreso il file css interno
In questo caso, style.css si trova nella radice della cartella del tema
function themeSlug_enqueue_scripts() { wp_enqueue_style( 'themeSlug-style', get_template_directory_uri() .'/style.css', '1.0.0'); } add_action('wp_enqueue_scripts', 'themeSlug_enqueue_scripts');
https://riptutorial.com/it/home 157
Compreso il file css esterno
In questo esempio vogliamo includere font font impressionante
function themeSlug_enqueue_scripts() { wp_enqueue_style( 'font-awesome', '//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.css'); } add_action('wp_enqueue_scripts', 'themeSlug_enqueue_scripts');
Accoda i fogli di stile solo per IE
add_action( 'wp_enqueue_scripts', 'enqueue_my_styles_and_scripts' ); /** * Enqueue styles (or scripts) conditionally. * * Load stylesheets (or scripts) specifically for IE. IE10 and above does * not support conditional comments in standards mode. * * @link https://gist.github.com/wpscholar/4947518 * @link https://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx */ function enqueue_my_styles_and_scripts() { // Internet Explorer specific stylesheet. wp_enqueue_style( 'themename-ie', get_stylesheet_directory_uri() . '/css/ie.css', array( 'twentyfifteen-style' ), '20141010' ); wp_style_add_data( 'themename-ie', 'conditional', 'lte IE 9' ); // Internet Explorer 7 specific stylesheet. wp_enqueue_style( 'themename-ie7', get_stylesheet_directory_uri() . '/css/ie7.css', array( 'twentyfifteen-style' ), '20141010' ); wp_style_add_data( 'themename-ie7', 'conditional', 'lt IE 8' ); }
Compreso il file css interno per la tua classe Plugin
class My_Plugin() { function __construct() { add_action( 'wp_enqueue_scripts', array( $this, 'init_fe_assets' ) ); } public function init_fe_assests() { wp_enqueue_style( 'my-plugin', plugin_dir_url( __FILE__ ) . 'assets/css/frontend/plugin.css', array(), '0.0.1', true ); } } new My_Plugin();
Aggiungi fogli di stile alternativi
https://riptutorial.com/it/home 158
<?php wp_enqueue_style('theme-five', get_template_directory_uri() . '/path/to/additional/css'); wp_style_add_data('theme-five', 'alt', true); wp_style_add_data('theme-five', 'title', __('theme-five.css', 'your-theme-name')); ?>
wp_style_add_data
Leggi Stili accattivanti online: https://riptutorial.com/it/wordpress/topic/1247/stili-accattivanti
https://riptutorial.com/it/home 159
Capitolo 62: Sviluppo di plugin
Sintassi
add_action (stringa $ tag, callable $ function_to_add, int $ priority = 10, int $ accepted_args = 1)
•
add_filter (stringa $ tag, callable $ function_to_add, int $ priority = 10, int $ accepted_args = 1)
•
Parametri
Parametro Dettaglio
$ tag(stringa) (Obbligatorio) Il nome del filtro per agganciare il callback $ function_to_add a.
$ function_to_add
(richiamabile) (Obbligatorio) Il callback da eseguire quando viene applicato il filtro.
$ priorità
(int) (Facoltativo) Utilizzato per specificare l'ordine in cui vengono eseguite le funzioni associate a una particolare azione. I numeri più bassi corrispondono all'esecuzione precedente e le funzioni con la stessa priorità vengono eseguite nell'ordine in cui sono stati aggiunti all'azione. Valore predefinito: 10
$ accepted_args
(int) (Facoltativo) Il numero di argomenti accettati dalla funzione. Valore predefinito: 1
Osservazioni
Il modo in cui i plugin Plugin funzionano è che in varie occasioni mentre WordPress è in esecuzione, WordPress verifica se alcuni Plugin hanno funzioni registrate da eseguire in quel momento e, in tal caso, le funzioni vengono eseguite. Queste funzioni modificano il comportamento predefinito di WordPress.
Esistono due tipi di hook:
I filtri ti danno la possibilità di cambiare il valore di un dato durante l'esecuzione di WordPress. Le funzioni di callback per i filtri verranno passate attraverso una variabile, modificate e quindi restituite. Sono pensati per funzionare in modo isolato e non dovrebbero mai influenzare le variabili globali o qualsiasi altra cosa al di fuori della funzione.
Le azioni , al contrario, consentono di aggiungere o modificare il funzionamento di WordPress. La funzione di callback verrà eseguita in un punto specifico nell'esecuzione di WordPress e può
https://riptutorial.com/it/home 160
eseguire alcuni tipi di attività, ad esempio l'emissione di output all'utente o l'inserimento di qualcosa nel database.
Riferimento del filtro
Riferimento di azione
Manuale
API plugin
Filtri vs Azioni
Examples
Filtro
add_filter('comment_text','before_comment'); add_filter('comment_text','after_comment'); function before_comment($comment_text){ return 'input before comment'.$comment_text; } function after_comment($comment_text){ return $comment_text.'input after comment'; }
Azione
add_action('wp_head','hook_javascript'); function hook_javascript() { $output="<script> alert('Page is loading...'); </script>"; echo $output; }
Esempi di sviluppo di plugin: Widget canzone preferita
<?php function wpshout_register_widgets() { register_widget( 'Favorite_Song_Widget'); } add_action( 'widgets_init', 'wpshout_register_widgets' ); class Favorite_Song_Widget extends WP_Widget { function Favorite_Song_Widget() { // Instantiate the parent object parent::__construct( 'favorite_song_widget', // Base ID __('Favorite Song', 'text_domain'), // Name array( 'description' => __( 'Widget for playable favorite song', 'text_domain' ), ) // Args
https://riptutorial.com/it/home 161
); } function widget( $args, $instance ) { echo $args['before_widget']; echo '<h3>Favorite Song Lists:</h3>'; echo $instance['songinfo']; echo '<a href="' . $instance['link'] . '">Download it</a><br>'; echo $instance['description']; echo $args['after_widget']; } function update($new_abc,$old_abc) { $instance = $old_abc; // Fields $instance['link'] = strip_tags($new_abc['link']); $instance['songinfo'] = strip_tags($new_abc['songinfo']); $instance['description'] = strip_tags($new_abc['description']); return $instance; } // Widget form creation function form($instance) { $link = ''; $songinfo = ''; $description = ''; // Check values if( $instance) { $link = esc_attr($instance['link']); $songinfo = esc_textarea($instance['songinfo']); $description = esc_textarea($instance['description']); } ?> <p> <label for="<?php echo $this->get_field_id('link'); ?>"><?php _e('Link', 'wp_widget_plugin'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('link'); ?>" name="<?php echo $this->get_field_name('link'); ?>" type="text" value="<?php echo $link; ?>" /> </p> <p> <label for="<?php echo $this->get_field_id('songinfo'); ?>"><?php _e('Song Info:', 'wp_widget_plugin'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('songinfo'); ?>" name="<?php echo $this->get_field_name('songinfo'); ?>" type="text" value="<?php echo $songinfo; ?>" /> </p> <p> <label for="<?php echo $this->get_field_id('description'); ?>"><?php _e('Description:', 'wp_widget_plugin'); ?></label> <textarea class="widefat" id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>" type="text" value="<?php echo $description; ?>"></textarea> </p> <p><a href="#" id="add-more-tabs"><?php _e('Add More Tabs', 'wp_widget_plugin'); ?></a></p> <?php }
https://riptutorial.com/it/home 162
}
Leggi Sviluppo di plugin online: https://riptutorial.com/it/wordpress/topic/6108/sviluppo-di-plugin
https://riptutorial.com/it/home 163
Capitolo 63: Tassonomie
Sintassi
register_taxonomy ($ taxonomy, $ object_type, $ args);•
Parametri
Parametro Dettagli
$ tassonomia
(stringa) (obbligatorio) Il nome della tassonomia. Il nome deve contenere solo lettere minuscole e il carattere di sottolineatura e non deve contenere più di 32 caratteri (restrizione della struttura del database).
$ object_type
(array / stringa) (obbligatorio) Nome del tipo di oggetto per l'oggetto di tassonomia. I tipi di oggetto possono essere Post Type o Post Type personalizzati che possono essere registrati.
$ args (array / stringa) (opzionale) Un array di argomenti.
Examples
Esempio di registrazione di una tassonomia per i generi
<?php // hook into the init action and call create_book_taxonomies when it fires add_action( 'init', 'create_book_taxonomies', 0 ); // create taxonomy genres for the post type "book" function create_book_taxonomies() { // Add new taxonomy, make it hierarchical (like categories) $labels = array( 'name' => _x( 'Genres', 'taxonomy general name' ), 'singular_name' => _x( 'Genre', 'taxonomy singular name' ), 'search_items' => __( 'Search Genres' ), 'all_items' => __( 'All Genres' ), 'parent_item' => __( 'Parent Genre' ), 'parent_item_colon' => __( 'Parent Genre:' ), 'edit_item' => __( 'Edit Genre' ), 'update_item' => __( 'Update Genre' ), 'add_new_item' => __( 'Add New Genre' ), 'new_item_name' => __( 'New Genre Name' ), 'menu_name' => __( 'Genre' ), ); $args = array( 'hierarchical' => true, 'labels' => $labels, 'show_ui' => true,
https://riptutorial.com/it/home 164
'show_admin_column' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'genre' ), ); register_taxonomy( 'genre', array( 'book' ), $args ); } ?>
Puoi definire tassonomie personalizzate nel file template functions.php un tema:
Aggiungi categoria nella pagina
È inoltre possibile aggiungere la stessa tassonomia creata in modo personalizzato nella pagina del tipo di post utilizzando il codice riportato di seguito.
function add_taxonomies_to_pages() { register_taxonomy_for_object_type( 'genre', 'page' ); } add_action( 'init', 'add_taxonomies_to_pages' );
Aggiungi il codice sopra nel file functions.php del tuo tema. post_tag stesso modo puoi aggiungere post_tag personalizzato o predefinito nella pagina del tipo di post.
Per ottenere pagine utilizzando la query di tassonomia personalizzata è necessario aggiungere sotto il codice nello stesso file.
if ( ! is_admin() ) { add_action( 'pre_get_posts', 'category_and_tag_archives' ); } function category_and_tag_archives( $wp_query ) { $my_post_array = array('page'); if ( $wp_query->get( 'category_name' ) || $wp_query->get( 'cat' ) ) $wp_query->set( 'post_type', $my_post_array ); }
Aggiungi categorie e tag alle pagine e inseriscile come classe in
// add tags and categories to pages function add_taxonomies_to_pages() { register_taxonomy_for_object_type( 'post_tag', 'page' ); register_taxonomy_for_object_type( 'category', 'page' ); } add_action( 'init', 'add_taxonomies_to_pages' ); if ( ! is_admin() ) { add_action( 'pre_get_posts', 'category_and_tag_archives' ); } function category_and_tag_archives( $wp_query ) { $my_post_array = array('post','page');
https://riptutorial.com/it/home 165
if ( $wp_query->get( 'category_name' ) || $wp_query->get( 'cat' ) ) $wp_query->set( 'post_type', $my_post_array ); if ( $wp_query->get( 'tag' ) ) $wp_query->set( 'post_type', $my_post_array ); } // add tags and categorys as class to <body> function add_categories_and_tags( $classes = '' ) { if( is_page() ) { $categories = get_the_category(); foreach( $categories as $category ) { $classes[] = 'category-'.$category->slug; } $tags = get_the_tags(); foreach( $tags as $tag ) { $classes[] = 'tag-'.$tag->slug; } } return $classes; } add_filter( 'body_class', 'add_categories_and_tags' );
Aggiungi categorie e tag alle pagine e inserisci come classe in
Puoi aggiungere questo codice al tuo file functions.php personalizzato:
// add tags and categories to pages function add_taxonomies_to_pages() { register_taxonomy_for_object_type( 'post_tag', 'page' ); register_taxonomy_for_object_type( 'category', 'page' ); } add_action( 'init', 'add_taxonomies_to_pages' ); if ( ! is_admin() ) { add_action( 'pre_get_posts', 'category_and_tag_archives' ); } function category_and_tag_archives( $wp_query ) { $my_post_array = array('post','page'); if ( $wp_query->get( 'category_name' ) || $wp_query->get( 'cat' ) ) $wp_query->set( 'post_type', $my_post_array ); if ( $wp_query->get( 'tag' ) ) $wp_query->set( 'post_type', $my_post_array ); } // add tags and categorys as class to <body> function add_categories_and_tags( $classes = '' ) { if( is_page() ) { $categories = get_the_category(); foreach( $categories as $category ) { $classes[] = 'category-'.$category->slug; }
https://riptutorial.com/it/home 166
$tags = get_the_tags(); foreach( $tags as $tag ) { $classes[] = 'tag-'.$tag->slug; } } return $classes; } add_filter( 'body_class', 'add_categories_and_tags' );
Funziona perfettamente, testato in WordPress 4.8
Leggi Tassonomie online: https://riptutorial.com/it/wordpress/topic/5943/tassonomie
https://riptutorial.com/it/home 167
Capitolo 64: Tema Wordpress e sviluppo del tema bambino
introduzione
Wordpress è un CMS ampiamente utilizzato per la creazione di semplici siti Web di informazioni, ma anche per la creazione di siti Web più sofisticati e persino di piccoli negozi online.
Wordpress utilizza temi. Questi temi sono utilizzati per creare la disposizione e le funzionalità di un sito Web Wordpress. I temi possono essere trovati su Internet.
Ogni thme ha le sue funzionalità e lay-out uniche, ma a volte è difficile trovare il tema giusto per un sito web. Fortunatamente siamo anche in grado di creare il nostro tema.
Examples
Sviluppare il tuo tema
Un tema di wordpress consiste di due tipi di file. I file di base di ciascun tema e i file che definiscono il layout e la funzionalità del tema. Questo secondo gruppo chiamerò i file specifici del tema.
I file di base del tema I file di base del tema sono i file utilizzati per impostare e registrare un tema. Nella lista seguente descriverò brevemente ogni file e il suo utilizzo. Più avanti aggiungerò i file di esempio più basilari necessari per impostare il tuo tema wordpress.
functions.php : Il file functions.php è usato per registrare tutte le funzioni, barre laterali, script e include del tema. In questo file puoi, ad esempio, includere file CSS, file JS, ecc.
•
Header and footer : i file di intestazione e piè di pagina (header.php e footer.php) sono i file utilizzati per chiamare l'intestazione e il piè di pagina. Il file di intestazione e piè di pagina, ad esempio, contiene il collegamento al sistema di back-end wordpress.
•
index.php : il file index.php è il file che crea il modello di pagina predefinito. In questo file puoi vedere, modificare e rimuovere pezzi di questo lay-out predefinito.
•
single.php : il file single.php è il file che crea la pagina del modello di singoli post. Proprio come il modello predefinito per le pagine, ma ora per le singole pagine di post.
•
format.php Il file format.php è il file che costruisce il modello di testo del contenuto da una pagina. Quindi, se avessi una home page e la modificassi dal back-end aggiungendo un testo. Questo file crea il markup standard di questo testo.
•
404.php Il file 404.php crea il modello 404. Questo file è costituito dal lay-out di base di questa pagina.
•
archive.php Il file archive.php crea il layout della pagina di archivio.•style.css Il file di foglio di stile di base.•
https://riptutorial.com/it/home 168
Quindi in questo elenco puoi vedere tutti i file richiesti per l'impostazione del tuo tema Wordpress. Ora diamo un'occhiata ad alcuni file che sei in grado di creare se vuoi, ma non sono richiesti file per un tema wordpress. Questi file sono per lo più file di modello e altre estensioni funzionali.
Modelli di pagina personalizzati page-<your own name>.php : in un tema di Wordpress puoi creare più modelli di pagina. creando nuovi file modello di pagina. Un file di modello di pagina standard è costituito dai seguenti attributi di nome. name of the template page name of the template e .php Se, ad esempio, si desidera creare un nuovo modello di pagina per la pagina del blog, è possibile chiamarlo page-blog.php Wordpress legge automaticamente il file e aggiunge il file al menu di scelta del modello. Assicurati di aver incluso almeno le funzioni get_header() e get_footer() . Assicurati inoltre di nominare il modello in un commento nella parte superiore del file aggiungendo il seguente esempio.
<?php /* * Template Name: Homepage Template */ get_header(); ?>
Modelli personalizzati di pagine singole single-<your own name>.php : in un tema di Wordpress, proprio come il modello di pagina descritto sopra, puoi anche creare i tuoi modelli di pagina singoli post. Proprio come il modello di pagina, il file consiste di tre parti single per dichiarare che si tratta di una singola pagina di post <your name of the template> e l'estensione di file .php . Proprio come i requisiti minimi del modello di pagina per assicurarsi che Wordpress legga il nuovo modello, sono state aggiunte le funzioni get_header() e get_footer() . E naturalmente aggiungere anche il nome del modello come nell'esempio qui sotto
<?php /* * Template Name: Post Portfolio * Template Post Type: post, page */ ?>
Indichiamo anche il Template post type: che rappresenta il tipo di modello che è, in questo caso post e pagina.
Modelli di testo post personalizzati format -<your own name>.php : in un tema Wordpress puoi anche creare modelli di output post. Questi modelli di formato sono la disposizione e il contenuto di un post. Ad esempio, se in alcuni casi vuoi che il post mostri solo il contenuto o il titolo del post, puoi utilizzare questi modelli per creare questo tipo di aggiustamenti. Poiché questo tipo di modelli è solo la formattazione del contenuto di back-end post creato da un utente, non è necessario includere get_header() e get_footer() poiché questi sono già definiti nei modelli di pagine. Assicurati che il tuo modello sia in grado di riconoscere un post utilizzando il seguente esempio di base.
https://riptutorial.com/it/home 169
<div> <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> </article> </div>
Ora che sappiamo qualcosa sui file di base e su alcuni dei numerosi file specifici del modello, è ora di iniziare a parlare di barre laterali e widget. In futuro questo verrà aggiunto insieme a un inizio sul tutorial passo passo per creare un tema Wordpress molto personale.
Leggi Tema Wordpress e sviluppo del tema bambino online: https://riptutorial.com/it/wordpress/topic/9940/tema-wordpress-e-sviluppo-del-tema-bambino
https://riptutorial.com/it/home 170
Capitolo 65: Temi
introduzione
I temi WordPress sono il front-end del tuo sito web. Sono ciò che le persone vedono quando visitano il sito. Ci sono migliaia di temi tra cui scegliere, versioni a pagamento e gratuite. Puoi anche creare il tuo tema personalizzato con solo un paio di file necessari.
Examples
Temi di WordPress
Come scegliere un tema
Ogni installazione di WordPress viene fornita con un tema preinstallato. Gestisci i tuoi temi dalla Dashboard. Vai a Aspetto> Temi per installare, visualizzare in anteprima, eliminare, attivare e aggiornare Temi. Il tema corrente si trova nell'angolo in alto a sinistra di questo menu.
Passando il mouse sull'immagine del tema, viene visualizzato il pulsante "Dettagli tema". Questo pulsante fornisce informazioni sul tema, come la versione e la descrizione. Facendo clic sull'immagine del tema corrente, puoi accedere a personalizzare le impostazioni specifiche del tema, come il titolo.
Aggiornamento disponibile
Se sono disponibili aggiornamenti per temi installati, troverai un messaggio che ti informa che è disponibile una nuova versione. Dovresti essere in grado di visualizzare i dettagli della nuova versione o aggiornarlo ora.
Visualizza i dettagli della versione
Facendo clic sul collegamento dei dettagli della versione si passerà a una pagina dalla directory dei temi di WordPress. Qui troverai i dettagli per la versione di aggiornamento.
•
Aggiorna ora
Facendo clic sul link dell'aggiornamento verrà installato l'aggiornamento del tema. I temi possono anche essere aggiornati dalla schermata Amministrazione> Dashboard> Aggiornamenti.
•
Oltre al tema corrente, la schermata Gestisci temi mostra anche gli altri temi installati ma attualmente inattivi. Ogni tema è rappresentato da un piccolo screenshot. Passando con il mouse su queste immagini vengono visualizzati i pulsanti "Dettagli tema", "Attiva" e "Anteprima dal vivo". Potrai anche aggiornare o eliminare temi inattivi da questa pagina. Ogni pagina in questa schermata mostrerà fino a 15 schermate di temi alla volta.
https://riptutorial.com/it/home 171
Attivare
Cliccando su questo link diventa questo il tema attuale.
•
Anteprima dal vivo
Cliccando su questo link viene visualizzata un'anteprima del blog con questa versione specifica del tema.
•
Elimina
Cliccando questo link cancella completamente questo tema, includi tutti i file e le cartelle dei temi. Tutto ciò che non è stato salvato verrà perso per sempre.
•
Aggiornamento disponibile
Fare riferimento alla sezione Aggiornamento disponibile sopra.
•
Installa i temi
Di seguito sono elencati diversi modi per installare Temi:
Programma di installazione di temi automatizzato
Questo può essere usato per installare Temi dalla directory dei temi di WordPress. Vai su Amministrazione> Aspetto> Temi per trovare la schermata Temi aspetto. Fai clic sul pulsante Aggiungi nuovo. Da qui troverai Temi da usare che sono gratuiti. Nella parte superiore di questa schermata è presente una funzione di ricerca con tre metodi disponibili per trovare un nuovo tema; Ricerca filtro, parola chiave e attributo.
•
Utilizzo del metodo di caricamento
Il metodo di caricamento installa un tema tramite un file ZIP. Tutti i temi nella directory dei temi di WordPress possono essere installati in questo modo. Dopo aver scaricato il file ZIP, vai su Amministrazione> Aspetto> Temi e fai clic sul pulsante Aggiungi nuovo. Quindi, fai clic sul link Carica tema. Cerca il file ZIP e fai clic su Installa ora. Per completare la creazione del tema corrente, fai clic sul link Attiva.
•
Utilizzo del metodo FTP
Per installare un tema con il metodo FTP è necessario prima scaricare i file del tema sul computer locale. Estrai il contenuto del file ZIP, preservando la struttura del file e aggiungili a una nuova cartella. Se ci sono istruzioni dall'autore del tema, assicurati di seguirle.
Utilizzare un client FTP per accedere al server Web del proprio sito. Aggiungi i file Theme caricati alla tua directory wp-content / themes fornita da WordPress. Se necessario, crea una cartella per contenere il tuo nuovo tema all'interno della directory wp-content / themes. Un esempio di questo sarebbe, se il tuo tema è chiamato Test, dovrebbe vivere in wp-content / themes / test.
•
https://riptutorial.com/it/home 172
Passare a Amministrazione> Aspetto> Temi e fare clic sul collegamento Attiva per selezionare il tema come tema corrente.
Installazione con cPanel
I pannelli di controllo cPanel offrono un altro metodo per installare Temi con un file ZIP o GZ. In cPanel Manager, se WordPress è installato, vai alla cartella Temi. Il percorso sarebbe simile a "public_html / wp-content / themes". Fare clic su Carica file (s) e caricare il file ZIP. Seleziona il file ZIP in cPanel e fai clic su Estrai contenuto del file nel pannello a destra per decomprimere quel file.
Passare a Amministrazione> Aspetto> Temi e fare clic sul collegamento Attiva per selezionare il tema come tema corrente.
•
Tutte le informazioni sopra elencate sono conformi al Codice WordPress. È stato abbreviato per brevità. Il materiale di origine originale può essere trovato qui . Oppure per maggiori informazioni visita codex.wordpress.org .
Creare un tema personalizzato
Queste istruzioni creano un tema WordPress molto semplice e conforme agli standard minimi.
Il primo passo è creare una nuova cartella di temi all'interno della directory dei temi di WordPress. Il percorso corretto sarà:> wp-content> temi> Per creare un tema valido, i temi di WordPress richiedono almeno la presenza di questi due file:
index.php•
style.css•
Il tuo foglio di stile dovrebbe contenere un commento che avvisi WordPress che un tema esiste qui.
/* Theme Name: <theme name> Author: <author name> Description: <description goes here> Version: <theme version #> Tags: <tag to id theme> */
Il tema è ora stato creato. Vai alla dashboard di WordPress e fai clic su Aspetto> Temi, per attivarlo.
Leggi Temi online: https://riptutorial.com/it/wordpress/topic/8967/temi
https://riptutorial.com/it/home 173
Capitolo 66: template_include
Parametri
Parametro Spiegazione
$template
Passa un parametro al filtro, $template è il percorso corrente del file appropriato per il tipo di post, come trovato nel tema figlio attivo o nel tema principale (se nessun tema figlio sul posto o tema figlio ha modelli classificati inferiori. Vedi la gerarchia dei template di wordpress per ulteriori dettagli).
Osservazioni
Devi restituire $template anche se non si modifica. Se questo ti confonde, guarda gli esempi in cui apply_filter() è stato usato nel codice
Non dovresti impostare le variabili qui per usarle più tardi, ci sono degli ami migliori per questo.
Un flusso di programma utile per questo filtro è:
Controlla $template include il nostro nome del tipo di post personalizzato -> gerarchia dei modelli !!
1.
in caso contrario, cerca nel nostro plug-in file adatti -> È meglio puntare a file specifici piuttosto che cercare nelle cartelle i file. Più efficiente. Ma completamente fino allo sviluppatore.
2.
restituire il modello.3.
Examples
Semplice esempio
Questo filtro è molto utile. Uno dei problemi più comuni per gli sviluppatori è come includere modelli nei plugin che sviluppano.
Il filtro viene applicato immediatamente dopo che wordpress individua il modello appropriato nel tema figlio / genitore attivo utilizzando la gerarchia di wp.
Fare attenzione a definire quando si desidera modificare il percorso del modello. Nell'esempio seguente, il codice controlla se la pagina corrente è l'unico punto di vista del nostro tipo messaggio personalizzato cpt .
Un esempio abbastanza semplice per iniziare!
add_filter('template_include', 'custom_function');
https://riptutorial.com/it/home 174
function custom_function($template){ //change a single post template... if( is_singular('cpt') ){ $template= 'path/to/another/template_file'; } return $template; }
Altro esempio di Adv
add_filter('template_include', 'custom_function'); function custom_function($template){ /* * This example is a little more advanced. * It will check to see if $template contains our post-type in the path. * If it does, the theme contains a high level template e.g. single-cpt.php * If not we look in the plugin parent folder for the file. e.g. single-cpt.php */ //check to see if the post type is in the filename (high priority file) //return template if it is! global $post; if( strpos($template, 'single-'.$post->post_type.'php' ) !== false && strpos($template, 'archive-'.$post->post_type.'php' ) !== false ){ return $template; } $plugin_path = 'var/etc/wp-content/plugins/plugin'; //include own logic here... if( is_singular($post->post_type) && file_exists($plugin_path.'/single-'.$post->post_type.'.php') ){ $template= $plugin_path.'/single-'.$post->post_type.'.php'; } elseif ( is_archive($post->post_type) && file_exists($plugin_path.'/archive-'.$post->post_type.'.php') ) { $template= $plugin_path.'/archive-'.$post->post_type.'.php'; } return $template; }
Leggi template_include online: https://riptutorial.com/it/wordpress/topic/1439/template-include
https://riptutorial.com/it/home 175
Capitolo 67: The Loop (ciclo principale di WordPress)
Examples
Struttura del ciclo WordPress di base
Ogni volta che WordPress carica la pagina, eseguirà il ciclo principale .
Il ciclo è il modo per scorrere tutti gli elementi relativi alla pagina corrente.
Il ciclo principale funzionerà su un oggetto WP_Query globale. La query ha un metodo globalizzato have_posts() , che ci consente di scorrere tutti i risultati. Infine, all'interno del ciclo è possibile chiamare il metodo the_post() (anche come funzione globale), che imposta l'oggetto post globale sul post corrente all'interno del ciclo e imposta i postdat al post corrente. Grazie a questo puoi chiamare funzioni come the_title , the_content , the_author ( template tag ) direttamente all'interno del ciclo.
Ad esempio, se ci si trova in elenchi di post, il ciclo principale conterrà un oggetto query con tutti i post.
Se si è su un singolo post (o pagina), conterrà una query con un singolo post (pagina) in cui ci si trova attualmente.
if ( have_posts() ) : while ( have_posts() ) : the_post(); var_dump( $post ); endwhile; endif;
Sintassi del loop alternativo
Puoi anche usare il loop con parentesi graffe come questo:
if ( have_posts() ) { while ( have_posts() ) { the_post(); var_dump( $post ); } }
Maneggiare nessun oggetto nel loop
Se vuoi gestire questo scenario, aggiungi un'istruzione if/else .
https://riptutorial.com/it/home 176
if ( have_posts() ) : while ( have_posts() ) : the_post(); var_dump( $post ); endwhile; else : __('This Query does not have any results'); endif;
Leggi The Loop (ciclo principale di WordPress) online: https://riptutorial.com/it/wordpress/topic/1803/the-loop--ciclo-principale-di-wordpress-
https://riptutorial.com/it/home 177
Capitolo 68: Tipi di messaggi personalizzati
Sintassi
register_post_type ($ post_type, $ args);•
Parametri
Parametro Dettagli
$ post_type (stringa) (obbligatorio)
$ args (array / stringa) (Opzionale)
Examples
Registrazione di un tipo di messaggio personalizzato
Supponiamo che tu disponga di un sito Web di una biblioteca e che desideri avere un tipo di post personalizzato denominato Libri . Può essere registrato come
function create_bookposttype() { $args = array( 'public' => true, 'labels' => array( 'name' => __( 'Books' ), 'singular_name' => __( 'Book' ) ), ); register_post_type( 'custompost_books', $args ); } add_action( 'init', 'create_bookposttype' );
e, per quanto semplice, ora hai registrato un tipo di messaggio personalizzato.
https://riptutorial.com/it/home 178
Questo snippet può essere inserito nel file functions.php theme o all'interno di una struttura di plugin.
Aggiungi tipi di post personalizzati alla query principale
La registrazione di un tipo di messaggio personalizzato non significa che viene aggiunta automaticamente alla query principale. È necessario utilizzare il filtro pre_get_posts per aggiungere tipi di post personalizzati alla query principale.
// Show posts of 'post' and 'book' custom post types on home page add_action( 'pre_get_posts', 'add_my_post_types_to_query' ); function add_my_post_types_to_query( $query ) { if ( is_home() && $query->is_main_query() ) $query->set( 'post_type', array( 'post', 'book' ) );
https://riptutorial.com/it/home 179
return $query; }
Aggiunta di tipi di post personalizzati al feed RSS principale
La registrazione di un tipo di messaggio personalizzato non significa che viene aggiunta automaticamente al feed RSS principale. È necessario utilizzare il filtro di request per aggiungere tipi di post personalizzati al feed RSS principale.
// Add 'books' custom post types on main RSS feed function add_book_post_types_to_rss($qv) { if (isset($qv['feed']) && !isset($qv['post_type'])) $qv['post_type'] = array('post', 'books', ); return $qv; } add_filter('request', 'add_book_post_types_to_rss');
Registra il tipo di messaggio personalizzato
if ( ! function_exists('products_post_type') ) { function products_post_type() { $labels = array( 'name' => _x( 'Products', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Product', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Products', 'text_domain' ), 'name_admin_bar' => __( 'Product', 'text_domain' ), 'archives' => __( 'Item Archives', 'text_domain' ), 'attributes' => __( 'Item Attributes', 'text_domain' ), 'parent_item_colon' => __( 'Parent Product:', 'text_domain' ), 'all_items' => __( 'All Products', 'text_domain' ), 'add_new_item' => __( 'Add New Product', 'text_domain' ), 'add_new' => __( 'New Product', 'text_domain' ), 'new_item' => __( 'New Item', 'text_domain' ), 'edit_item' => __( 'Edit Product', 'text_domain' ), 'update_item' => __( 'Update Product', 'text_domain' ), 'view_item' => __( 'View Product', 'text_domain' ), 'view_items' => __( 'View Items', 'text_domain' ), 'search_items' => __( 'Search products', 'text_domain' ), 'not_found' => __( 'No products found', 'text_domain' ), 'not_found_in_trash' => __( 'No products found in Trash', 'text_domain' ), 'featured_image' => __( 'Featured Image', 'text_domain' ), 'set_featured_image' => __( 'Set featured image', 'text_domain' ), 'remove_featured_image' => __( 'Remove featured image', 'text_domain' ), 'use_featured_image' => __( 'Use as featured image', 'text_domain' ), 'insert_into_item' => __( 'Insert into item', 'text_domain' ), 'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ), 'items_list' => __( 'Items list', 'text_domain' ), 'items_list_navigation' => __( 'Items list navigation', 'text_domain' ), 'filter_items_list' => __( 'Filter items list', 'text_domain' ), ); $args = array( 'label' => __( 'Product', 'text_domain' ), 'description' => __( 'Product information pages.', 'text_domain' ), 'labels' => $labels,
https://riptutorial.com/it/home 180
'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'custom-fields', ), 'taxonomies' => array( 'category', 'post_tag' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'menu_icon' => 'dashicons-products', 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', 'show_in_rest' => true, ); register_post_type( 'product', $args ); } add_action( 'init', 'products_post_type', 0 ); }
Tipo di messaggio personalizzato utilizzando Twenty Fifteen WordPress Theme
È possibile utilizzare qualsiasi nome per la funzione.
function custom_postype(){ register_post_type('cus_post',array( 'labels'=>array( 'name'=>'khaiyam'// Use any name you want to show in menu for your users ), 'public'=>true,// **Must required 'supports'=>array('title','editor','thumbnail')// Features you want to provide on your posts )); } add_action('after_setup_theme','custom_postytpe');
o
add_action('init','custom_postytpe');
Puoi usare uno dei ganci che desideri ma ovviamente hanno un significato e usi diversi.
https://riptutorial.com/it/home 181
Tipo di post personalizzato nella ricerca predefinita
Puoi aggiungere post personalizzati di tipo post sulla ricerca di wordpress predefinita, Aggiungi sotto il codice in theme functions.php
function my_search_filter($query) { if ( !is_admin() && $query->is_main_query() ) { if ($query->is_search) { $query->set('post_type', array( 'news','post','article' ) ); } } } add_action('pre_get_posts','my_search_filter');
Leggi Tipi di messaggi personalizzati online: https://riptutorial.com/it/wordpress/topic/1374/tipi-di-messaggi-personalizzati
https://riptutorial.com/it/home 182
Capitolo 69: wp_get_current_user ()
Sintassi
wp_get_current_user ()•
Examples
Ottenere l'utente corrente
Ottenere tutte le informazioni dell'utente corrente in wordpress usando la funzione predefinita wp_get_current_user();
<?php $current_user = wp_get_current_user(); echo "Username :".$current_user->user_login; echo "Username :".$current_user->ID; echo "Username :".$current_user->user_pass; echo "Username :".$current_user->user_nicename; echo "Username :".$current_user->user_email; echo "Username :".$current_user->user_url; echo "Username :".$current_user->user_registered; echo "Username :".$current_user->user_activation_key; echo "Username :".$current_user->user_status; echo "Username :".$current_user->display_name; ?>
Utilizza il ciclo foreach per ottenere le informazioni utente da wp_get_current_user ()
$user = wp_get_current_user(); foreach($user->data as $key=>$user_data){ if($key == 'user_pass' || $key == 'user_activation_key' || $key=='user_status'){} else{ $nice_key = ucfirst(str_replace('_', ' ', $key)); if($key == 'user_registered'){ $user_data = date_i18n(get_option('date_format'), strtotime($user_data)); } echo $nice_key . ' : ' . $user_data . '<br />'; } }
Leggi wp_get_current_user () online: https://riptutorial.com/it/wordpress/topic/2693/wp-get-current-user---
https://riptutorial.com/it/home 183
Capitolo 70: wp_get_current_user ()
Examples
Ricevi le informazioni dell'utente connesso corrente
Recupera le informazioni relative all'utente attualmente connesso e le inserisce nella variabile globale $ current_user
Questa funzione non accetta alcun parametro.
Uso:
<?php wp_get_current_user(); ?>
Esempio:
<?php $current_user = wp_get_current_user(); echo 'Username: ' . $current_user->user_login . "\n"; echo 'User email: ' . $current_user->user_email . "\n"; echo 'User level: ' . $current_user->user_level . "\n"; echo 'User first name: ' . $current_user->user_firstname . "\n"; echo 'User last name: ' . $current_user->user_lastname . "\n"; echo 'User display name: ' . $current_user->display_name . "\n"; echo 'User ID: ' . $current_user->ID . "\n"; ?>
Per determinare se un visitatore ha effettuato l'accesso o meno, puoi utilizzare is_user_logged_in () prima, quindi ottenere le informazioni sull'utente corrente se il visitatore ha effettuato l'accesso:
<?php if ( is_user_logged_in() ) { $current_user = wp_get_current_user(); echo 'Welcome, ' . $current_user->user_login . '!'; } else { echo 'Welcome, visitor!'; } ?>
Leggi wp_get_current_user () online: https://riptutorial.com/it/wordpress/topic/6649/wp-get-current-user---
https://riptutorial.com/it/home 184
Capitolo 71: WP-CLI
introduzione
WP-CLI è un insieme di strumenti da riga di comando per la gestione delle installazioni di WordPress. Puoi aggiornare plugin, configurare installazioni multisito e molto altro, senza usare un browser web.
Examples
Gestisci temi
Ottieni un elenco di temi.
$ wp theme list
Installa l'ultima versione da wordpress.org e attiva
$ wp theme install twentysixteen --activate
Installa da un file zip locale
$ wp theme install ../my-theme.zip
Installa da un file zip remoto
$ wp theme install http://s3.amazonaws.com/bucketname/my-theme.zip?AWSAccessKeyId=123&Expires=456&Signature=abcdef
Ottieni dettagli su un tema installato
$ wp theme get twentysixteen --fields=name,title,version
Ottieni lo stato del tema
$ wp theme status twentysixteen
Gestisci i plugin
Ottieni un elenco di plug-in
$ wp plugin list
Elenca plugin attivi sul sito.
https://riptutorial.com/it/home 185
$ wp plugin list --status=active --format=json
Elenca i plug-in su ciascun sito in una rete.
$ wp site list --field=url | xargs -I % wp plugin list --url=%
Attiva plugin
$ wp plugin activate hello-dolly
Disattiva il plugin
$ wp plugin deactivate hello-dolly
Elimina plugin
$ wp plugin delete hello-dolly
Installa l'ultima versione da wordpress.org e attiva
$ wp plugin install bbpress --activate
Gestisci WP-CLI stessa
Mostra la versione attualmente installata.
$ wp cli version
Controlla gli aggiornamenti a WP-CLI.
$ wp cli check-update
Aggiorna WP-CLI all'ultima versione stabile.
$ wp cli update
Elenca tutti gli alias disponibili.
$ wp cli alias
Stampa vari dettagli sull'ambiente WP-CLI.
$ wp cli info
Scarica l'elenco dei comandi installati, come JSON.
https://riptutorial.com/it/home 186
$ wp cli cmd-dump
Scarica, installa, aggiorna e gestisci l'installazione di WordPress.
Scarica il core di WordPress
$ wp core download --locale=nl_NL
Installa WordPress
$ wp core install --url=example.com --title=Example --admin_user=supervisor --admin_password=strongpassword [email protected]
Mostra la versione di WordPress
$ wp core version
Trasforma un'installazione a sito singolo in un'installazione multisite di WordPress.
$ wp core multisite-convert
Installa il multisito WordPress da zero.
$ wp core multisite-install
Gestisci gli utenti
Elenca gli ID utente
$ wp user list --field=ID
Crea un nuovo utente.
$ wp user create bob [email protected] --role=author
Aggiorna un utente esistente.
$ wp user update 123 --display_name=Mary --user_pass=marypass
Elimina l'utente 123 e riassegna i post all'utente 567
$ wp user delete 123 --reassign=567
Eseguire le operazioni di base del database utilizzando le credenziali memorizzate in wp-config.php
https://riptutorial.com/it/home 187
Crea un nuovo database.
$ wp db create
Elimina un database esistente.
$ wp db drop --yes
Reimposta il database corrente.
$ wp db reset --yes
Esegui una query SQL memorizzata in un file.
$ wp db query < debug.sql
Leggi WP-CLI online: https://riptutorial.com/it/wordpress/topic/9169/wp-cli
https://riptutorial.com/it/home 188
Capitolo 72: WP-Cron
Examples
wp_schedule_event () esempio
// register activation hook register_activation_hook( __FILE__, 'example_activation' ); // function for activation hook function example_activation() { // check if scheduled hook exists if ( !wp_next_scheduled( 'my_event' )) { // Schedules a hook // time() - the first time of an event to run ( UNIX timestamp format ) // 'hourly' - recurrence ('hourly', 'twicedaily', 'daily' ) // 'my_event' - the name of an action hook to execute. wp_schedule_event( time(), 'hourly', 'my_event' ); } } add_action( 'my_event', 'do_this_hourly' ); // the code of your hourly event function do_this_hourly() { // put your code here } // register deactivation hook register_deactivation_hook(__FILE__, 'example_deactivation'); // function for deactivation hook function example_deactivation() { // clear scheduled hook wp_clear_scheduled_hook( 'my_event' ); }
Importante: il cron di WordPress viene eseguito solo quando viene colpita una pagina del tuo sito web. Quindi, per il sito web con traffico basso è necessario configurare il cron sul tuo hosting per colpire le pagine.
intervallo di ricorrenza personalizzato in wp_schedule_event ()
// this function add custom interval (5 minutes) to the $schedules function five_minutes_interval( $schedules ) { $schedules['five_minutes'] = array( 'interval' => 60 * 5, 'display' => '5 minutes'; ); return $schedules; } // add a custom interval filter add_filter( 'cron_schedules', 'five_minutes_interval' );
https://riptutorial.com/it/home 189
// Schedules a hook wp_schedule_event( time(), 'five_minutes', 'my_event' );
Leggi WP-Cron online: https://riptutorial.com/it/wordpress/topic/6783/wp-cron
https://riptutorial.com/it/home 190
Titoli di coda
S. No
Capitoli Contributors
1Iniziare con WordPress
4444, A. Raza, Andrew, animuson, Anupam, Chris Fletcher, Ciprian, Community, Florida, James Jones, JonasCz, Leo F, Marc St Raymond, Mayank Gupta, Milap, nus, Panda, rap-2-h, Seth C., Shubham, Trevor Clarke, vajrasar
2 add_action () Abel Melquiades Callejo, Waqas Bukhary
3 add_editor_style () Gabriel Chi Hong Lee
4 add_menu_page () brasofilo, Gabriel Chi Hong Lee
5add_submenu_page ()
Gabriel Chi Hong Lee, theoretisch
6add_theme_support ()
Gabriel Chi Hong Lee
7Admin Dashboard Widgets
theoretisch
8Aggiorna WordPress manualmente
KnightHawk
9
Aggiungi / rimuovi le informazioni di contatto per gli utenti con hook del filtro user_contactmethods
Petar Popovic, RamenChef
10 Aggiungi Shortcode purvik7373, RamenChef
11 AJAXAndy, Digvijayad, Gaurav Srivastava, GreatBlakes, Nisarg Patel, Ruslan Murarov, stweb
12 API REST Picard
13 Azioni e filtri David, Ihor Vorotnov, Mrinal Haque, Trying Tobemyself
14Ciclo principale alternato (pre_get_posts filter)
Dawid Urbanski, Petar Popovic
15 Ciclo WP_Query () vrajesh
https://riptutorial.com/it/home 191
16 Codice cortoAd Wicks, Adam Genshaft, brasofilo, John Slegers, Kylar, Shashank Agarwal
17
Come posso integrare Markdown editor con Add-on del ripetitore Advance Custom Field.
Fatbit
18Crea un modello per il tipo di messaggio personalizzato
Ashok G, Egnaro, Joe Dooley, mnoronha
19Crea un post programmaticamente
RamenChef, Roel Magdaleno, RRikesh
20Creare un modello personalizzato
Petar Popovic
21Creazione di plugin WordPress
Seth C.
22Customizer Hello World
Dan Green-Leipciger
23 Debug barbocc, dingo_d, jgraup
24 dentro Abel Melquiades Callejo, barbocc
25Esegui WordPress locale con XAMPP
Pierre.Vriens, theoretisch
26
Esercizi personalizzati con excerpt_length e excerpt_more
inkista, Petar Popovic, RamenChef
27Fare richieste di rete con l'API HTTP
Jordan, mjangda, Rarst
28Funzione: add_action ()
bosco, RamenChef
29Funzione: wp_trim_words ()
Harshal Limaye
30 Gerarchia dei modelli jgraup, MarZab, Pelmered, theoretisch
Abel Melquiades Callejo, Harshal Limaye, HeyCameron, KenB, Nate Beers, RamenChef, Tom J Nowell, virtualLast, Wes
31 get_bloginfo ()
https://riptutorial.com/it/home 192
Moberly
32 get_home_path () Ihor Vorotnov
33 get_option () Gabriel Chi Hong Lee
34 get_permalink () Gabriel Chi Hong Lee
35 get_template_part () Dan Devine, Kushal Shah
36 get_the_category () Gabriel Chi Hong Lee
37 get_the_title () Gabriel Chi Hong Lee
38 HOME_URL () dingo_d, Kushal Shah, matthew, Mr. Developer
39 il titolo() Gabriel Chi Hong Lee
40Installazione e configurazione
Kenyon, Marco Romano, Ping.Chen, S.L. Barth, stig-js, theoretisch, Yuan Lung Luo
41 L'oggetto $ wpdb Kushal Shah, mcon, stweb
42La barra di amministrazione (aka "The Toolbar")
dingo_d, Harshal Limaye, JCL1178, Kushal Shah
43 Messaggi di ricerca dingo_d
44 Meta Box Austin Winstanley
45 Migrazione del sito Austin Winstanley
46Nozioni di base sui temi del bambino
Andrei, Razvan Onofrei, Vlad Olaru
47
Nozioni di base sulla personalizzazione (aggiungi pannello, sezione, impostazioni, controllo)
4444, Ahmad Awais, RamenChef
48 Opzioni API Harshal Limaye, Pat J, RamenChef
49 Post formati Shashank Agarwal
50Proteggi la tua installazione
James Jones
Rimuovi interruzioni 51 Austin Winstanley
https://riptutorial.com/it/home 193
di riga automatiche dal contenuto e dall'estratto
52Rimuovi la versione da Wordpress e Stylesheets
jay.jivani, mnoronha, theoretisch
53 Scansioni di scriptdingo_d, Harshal Limaye, J.D., mbacon40, montrealist, Pelmered, Petar Popovic
54Shortcode con attributo
Digvijayad, Firefog, RamenChef
55 Shortcodes Pelmered
56Sicurezza in WordPress - Escaping
Laxmana, the4kman
57Sicurezza in WordPress - Sanitizzazione
Laxmana
58 sidebars dingo_d, Kushal Shah, theoretisch
59 Stili accattivantidingo_d, Harshal Limaye, Laxmana, mnoronha, montrealist, Petar Popovic, RamenChef, Ruslan Murarov, virtualLast
60 Sviluppo di plugin Angle.Ŗ, Ping.Chen
61 Tassonomie adifatz, Kushal Shah, purvik7373
62Tema Wordpress e sviluppo del tema bambino
Deathstorm
63 Temi Jef
64 template_include Abel Melquiades Callejo, David, RamenChef
65The Loop (ciclo principale di WordPress)
anik4e, Dawid Urbanski
66Tipi di messaggi personalizzati
Caio Felipe Pereira, Dan Devine, J.D., janw, jgraup, Kushal Shah, Omar Khaiyam, Ranuka, theoretisch
67wp_get_current_user ()
Abel Melquiades Callejo, Benoti, Muhammad Farrukh Faizy
https://riptutorial.com/it/home 194
68 WP-CLI jgraup
69 WP-Cron stweb
https://riptutorial.com/it/home 195