Requisiti
Un tema deve soddisfare tutti i seguenti requisiti per essere incluso nella Directory dei Temi di WordPress.org.
I temi che presentano 3 o più problemi distinti possono essere chiusi come non approvati. Tuttavia, gli autori del tema possono riesumettere il tema una volta corretti gli errori.
1 Licenza e diritto d’autore
I temi devono essere compatibili con la Licenza Pubblica Generale GNU.
Anche se qualsiasi licenza compatibile con la GPL è accettabile, è fortemente consigliato utilizzare la stessa licenza di WordPress, ovvero “GPLv2 o successiva”.
Tutto il codice, i dati e le immagini – qualsiasi cosa nel file zip del tema – devono essere conformi alla GPL o a una licenza compatibile con la GPL. Le librerie, il codice, le immagini o altro di terze parti incluse devono essere compatibili. Per una lista specifica di licenze compatibili, consulta la lista di licenze compatibili con la GPL su gnu.org.
Includi le informazioni sul copyright per il tema stesso.
Includi la licenza, le informazioni sul copyright e l’origine di tutte le risorse incluse, come caratteri o immagini (per le risorse di dominio pubblico, le informazioni sul copyright sono escluse).
Fornisci un elenco di tutte le risorse in un unico file.
Tutto il codice e il design devono essere tuoi o legalmente tuoi. Il clonare i design non è accettabile.
Le dichiarazioni di copyright sul front end devono mostrare solo il copyright dell’utente, non il copyright dell’autore del tema.
Leggi di più su copyright e attribuzione.
2 Privacy
Qualsiasi tracciamento e raccolta di dati utente deve essere disabilitato per impostazione predefinita e consentito solo su consenso esplicito (opt-in).
La documentazione su come vengono raccolti e utilizzati i dati dell’utente deve essere inclusa nel file readme.txt del tema, preferibilmente con una politica sulla privacy chiaramente dichiarata.
3 Accesibilità
Link di salto
I temi devono includere un meccanismo che consente agli utenti di navigare direttamente al contenuto o alla navigazione quando entrano in una qualsiasi pagina.
Questi link possono essere posizionati fuori dalla schermata inizialmente, ma devono essere disponibili agli utenti del lettore di schermo e devono essere visibili quando si focalizza la tastiera per i navigatori con tastiera.
Un link di salto minimalmente conforme deve:
- Essere il primo elemento focalizzabile percepito da un utente tramite un lettore di schermo o la navigazione con tastiera.
- Essere visibile quando il focus della tastiera si sposta sul link.
- Spostare il focus all’area principale del contenuto della pagina quando attivato.
Note: Questo si applica solo se c’è qualcosa da saltare, come un menu o una sezione di intestazione più grande o un’area widget secondaria prima del contenuto principale. Nei temi a blocchi, i link di salto vengono aggiunti automaticamente al tag <main>.
Navigazione con la tastiera
Gli autori dei temi devono fornire un’evidenziazione visiva del focus della tastiera nei menu di navigazione e per i campi del modulo, i pulsanti di invio e i collegamenti di testo.
- Tutti i controlli e i collegamenti devono essere raggiungibili utilizzando la tastiera.
- Tutti i controlli utilizzabili con il mouse devono essere utilizzabili con la tastiera, indipendentemente dal dispositivo e dalle dimensioni dello schermo. Ciò include, ma non è limitato a, versioni responsive per schermi piccoli, dispositivi mobili e altri dispositivi touchscreen.
Ulteriori informazioni sulla navigazione con la tastiera
Collegamenti all’interno del contenuto e dei commenti devono essere sottolineati
Quando i collegamenti appaiono all’interno di un corpo più ampio di contenuto a livello di blocco, devono essere chiaramente distinguibili dal contenuto circostante (contenuto del post, contenuto del commento, widget di testo, opzioni personalizzate con grandi blocchi di testo).
I collegamenti in contesti simili alla navigazione (ad esempio, menu, elenchi di prossimi post nei widget, dati di post raggruppati) non devono essere specificamente distinti dal contenuto circostante.
La sottolineatura è l’unico metodo accettato per indicare i collegamenti all’interno del contenuto. Il testo in grassetto, corsivo o differenziato per colore è ambiguo e non verrà accettato.
Se il tema ha il tag ‘accessibility-ready’, allora deve soddisfare questi requisiti aggiuntivi.
4 Codice
Non devono esserci errori, avvisi o avvertimenti in PHP o JavaScript.
Il tema deve essere sicuro.
- Convalidare e sanificare i dati non affidabili prima di inserirli nel database.
- Effettuare l’escape di tutti i dati non affidabili prima dell’output (Vedi: Convalida dei dati).
Non utilizzare funzioni o costanti deprecate.
Prefisso
Fornire un prefisso univoco per tutto ciò che il tema definisce nello spazio dei nomi pubblico, inclusi opzioni, funzioni, variabili globali, costanti, metadati del post, nomi handle di wp_enqueue_script/style, nomi di add_image_size, chiavi wp_script_add_data, slug/ID per nuove categorie create con register_block_pattern_category, ecc.
Eccezioni:
- Gli handle di wp_enqueue_script & wp_enqueue_style non devono avere un prefisso se si tratta di risorse di terze parti, come i file CSS di un framework o qualsiasi script di terze parti.
- Posizioni dei menu e ID della barra laterale.
5 Funzionalità e Caratteristiche
Non è consentito manipolare l’anteprima su WordPress.org e può comportare la sospensione o la chiusura del tuo account utente.
Avvisi dell’amministratore:
- Usa l’API admin_notices per tutte le notifiche generate dal tema.
- Gli avvisi devono essere eliminabili.
- Tutto ciò che è contenuto nell’avviso dell’amministratore deve seguire il design dell’interfaccia utente di base per gli avvisi.
Non fare:
- Usa l’API admin_notices per tutte le notifiche generate dal tema.
- Gli avvisi devono essere eliminabili.
- Tutto ciò che è contenuto nell’avviso dell’amministratore deve seguire il design dell’interfaccia utente di base per gli avvisi.
Non includere:
- Tipi di post personalizzati.
- Blocchi personalizzati.
- Ruoli personalizzati.
- Metodi di contatto utente personalizzati.
- Tipi di file MIME personalizzati.
- Shortcode.
- Funzionalità non correlate a design e presentazione.
Esempi di ganci non presentazionali:
'wp_generator', // @link https://developer.wordpress.org/reference/functions/wp_generator/ 'feed_links', // @link https://developer.wordpress.org/reference/functions/feed_links/ 'feed_links_extra', // @link https://developer.wordpress.org/reference/functions/feed_links_extra/ 'wp_resource_hints', // @link https://developer.wordpress.org/reference/functions/wp_resource_hints/ 'adjacent_posts_rel_link_wp_head', // @link https://developer.wordpress.org/reference/functions/adjacent_posts_rel_link_wp_head/ 'wp_shortlink_wp_head', // @link https://developer.wordpress.org/reference/functions/wp_shortlink_wp_head/ '_admin_bar_bump_cb', // @link https://developer.wordpress.org/reference/functions/_admin_bar_bump_cb/ 'rsd_link', // @link https://developer.wordpress.org/reference/functions/rsd_link/ 'rest_output_link_wp_head', // @link https://developer.wordpress.org/reference/functions/rest_output_link_wp_head/ 'wp_oembed_add_discovery_links', // @link https://developer.wordpress.org/reference/functions/wp_oembed_add_discovery_links/ 'wp_oembed_add_host_js', // @link https://developer.wordpress.org/reference/functions/wp_oembed_add_host_js/ 'rel_canonical', // @link https://developer.wordpress.org/reference/functions/rel_canonical/
6 Plugins
I temi possono solo raccomandare plugin ospitati su WordPress.org.
I plugin possono essere installati solo mediante azione dell’utente, non automaticamente.
Non fare:
- Includere file zip o plugin nella cartella del tema o scaricare automaticamente i plugin.
- Includere funzionalità di plugin.
Se non sei sicuro se una funzionalità è di competenza dei plugin, contatta il team e chiedi prima. themes@wordpress.org.
Esempi di territorio dei plugin
Analytics or tracking support SEO options Contact forms Non-design related meta boxes Resource caching Social media ‘like’, ‘follow’ and ‘share buttons’ Session tampering
7 Nomi, ortografia e marchi
Il team dei temi può rifiutare i temi in base al nome e chiedere che il nome venga cambiato se decidono che il nome è inappropriato o troppo simile a un tema o marchio esistente.
- I nomi dei temi non devono utilizzare: WordPress, Theme, Twenty*
- Scrivere correttamente “WordPress” in tutto il testo visibile pubblicamente: tutto una parola, con entrambe le lettere maiuscole W e P
- Nessuna violazione di marchi registrati.
8 Lingua e internazionalizzazione
Tutte le stringhe di testo devono essere traducibili utilizzando gettext, con l’eccezione temporanea del testo nei file template HTML.
Usa lo slug del tema come dominio di testo e aggiungilo a style.css. Lo slug del tema è il nome del tema in minuscolo, con gli spazi sostituiti da un trattino (-). È anche il nome della cartella per il tema.
Se il tema utilizza un framework, allora non devono essere utilizzati più di due domini di testo univoci (come tgmpa, redux-framework, kirki o qualche altro framework consentito).
Leggi di più sull’internazionalizzazione.
9 Files
Prepara i tuoi file:
- I temi devono essere completi al momento della presentazione.
- Rimuovi il codice non destinato alla versione gratuita del tema.
- Rimuovi directory come .git, .svn, .hg e .bzr.
- Assicurati che venga utilizzato solo un tipo di terminazione delle linee. Se vengono utilizzate entrambe le terminazioni delle linee DOS e UNIX, ciò può causare problemi con SVN e il tuo tema o l’aggiornamento del tema non verranno caricati nella directory.
- Se il tuo tema si basa su un tema di partenza come Underscores (_s), assicurati che tutti i file siano aggiornati correttamente.
File non consentiti
thumbs.db => Windows thumbnail store desktop.ini => windows system file project.properties => NetBeans Project File project.xml => NetBeans Project File .kpf => Komodo Project File php.ini => PHP server settings file dwsync.xml => Dreamweaver project file error_log => PHP error log web.config => Server settings file .sql => SQL dump file __MACOSX => OSX system file .lubith => Lubith theme generator file .wie => Widget import file .dat => Customizer import file .xml => XML file .sh => Shell script file favicon.ico => Favicon Hidden Files or Folders Zip files Allowed xml files: wpml-config.xml,loco.xml,phpcs.xml,
Non sono ammessi risorse remote senza il consenso dell’utente:
Includi tutti gli script, le immagini, i video e altre risorse nel file zip del tema. L’unica eccezione a questa richiesta sono i Google Fonts.
Non fare:
- Utilizzare servizi CDN o simili.
- Recuperare file o dati da una risorsa remota, incluso il tuo sito web, senza il consenso esplicito dell’utente.
Ciò è dovuto alle normative GDPR e sulla privacy.
Foglio di stile principale
Gli header in style.css devono seguire le linee guida e i requisiti per il foglio di stile principale nel Manuale dello sviluppatore di temi.
Header obbligatori in style.css
Theme Name: Name of the theme. Author: The name of the individual or organization who developed the theme. Using the Theme Author’s wordpress.org username is recommended. Description: A short description of the theme. Version: The version, written in X.X or X.X.X format. Requires at least: The oldest main WordPress version supported, written in X.X format. Tested up to: The last main WordPress version the theme has been tested up to, i.e. 5.4. Only the number. Requires PHP: The oldest PHP version supported, in X.X format, only the number License: The license of the theme. License URI: The URL of the theme license. Text Domain: The string used for textdomain for translation.
Il Theme URI è facoltativo. Se utilizzato, deve trattarsi del tema ospitato su WordPress.org. L’utilizzo di WordPress.org nel Theme URI è riservato per i temi predefiniti (Twenty X).
Author URI è facoltativo. Se utilizzato, deve essere una pagina o un sito web sull’autore, sul negozio di temi dell’autore o sul sito web di progetti/sviluppo dell’autore.
Per una lista di tag disponibili, consulta la lista dei tag dei temi.
File readme.txt
Deve essere incluso un file readme.txt valido.
Esempio di readme.txt
=== Theme Name === Contributors: (Should only contain one WordPress.org username.) Requires at least: 5.0 Tested up to: 5.2 Requires PHP: 5.6 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Short description. No more than 150 chars. == Description == Theme desc. == Frequently Asked Questions == = A question that someone might have = An answer to that question. == Changelog == = 1.0 = * Added new option = 0.5 = * Security bug addressed * Changed thumbnail size == Upgrade Notice == = 1.0 = * Upgrade notices describe the reason a user should upgrade. No more than 300 characters. = 0.5 = * This version fixes a security related bug. Upgrade immediately. == Resources == * magnify.jpg Jane Doe, CC0, example.com * supermenu.js © 2013-2015 James Today, MIT, example.com
Fogli di stile e script
Quando vengono utilizzati script o file minificati, i file originali devono essere inclusi anche nella cartella del tema.
Utilizzo di librerie di terze parti
WordPress include diverse librerie come jQuery. Per motivi di sicurezza e stabilità, i temi non possono includere tali librerie nel proprio codice. Invece, i temi devono utilizzare le versioni di tali librerie incluse con WordPress.
Per una lista di tutte le librerie JavaScript incluse in WordPress, consulta Script predefiniti inclusi e registrati da WordPress.
Immagini
Non sono ammesse immagini che promuovono odio o violenza o immagini che mostrano bambini con tratti facciali o corporei riconoscibili.
Schermata
- La schermata non deve sembrare un annuncio. Il revisore può soggettivamente chiederti di cambiare le schermate se ritengono che non siano appropriate.
10 Temi classici
Deve avere una dichiarazione DOCTYPE valida e includere language_attributes().
Chiamare i file di template personalizzati utilizzando get_template_part() o locate_template().
Visualizzare il contenuto corretto in base all’impostazione della pagina principale (Vedi spiegazione).
Opzioni e impostazioni
Usa il Customizer per implementare le opzioni del tema.
Usa la capacità edit_theme_options per determinare il permesso dell’utente di modificare le opzioni, anziché fare affidamento su un ruolo (ad esempio, amministratore) o su una diversa capacità (ad esempio, edit_themes, manage_options).
Includi:
- wp_head() – (immediatamente prima di )
- body_class() – (all’interno del tag body)
- wp_footer() – (immediatamente prima di )
- wp_body_open() – (immediatamente dopo )
- post_class()
- wp_link_pages()
- add_theme_support( ‘title-tag’ )
- add_theme_support( ‘automatic-feed-links’ )
Template
Se utilizzati nel tema, i file di template standard devono essere chiamati dalle rispettive funzioni.
- header.php (tramite get_header())
- footer.php (tramite get_footer())
- sidebar.php (tramite get_sidebar())
- searchform.php (tramite get_search_form())
11 Temi a blocchi
Includere i file richiesti: style.css, readme.txt, theme.json e index.html. Index.html deve essere collocato all’interno di una cartella chiamata templates.
I template a blocchi devono essere completi e i blocchi non devono avere tag di chiusura mancanti o incorretti.
12 Vendita, crediti, collegamenti e spam
I temi possono includere un singolo link di credito rivolto all’utente, limitato al Theme URI o Author URI definito in style.css.
I temi possono anche avere un link di credito aggiuntivo rivolto all’utente che punta a WordPress.org.
- I temi non devono visualizzare vendite intrusive.
- I temi non devono visualizzare vendite nel front-end.
I temi devono divulgare tutti gli affiliati.
Il tema e le sue pagine visibili pubblicamente, inclusa la descrizione del tema, i file readme, i contenuti di avvio inclusi e i file di traduzione, non possono essere utilizzati per lo spam. Il comportamento spammy include (ma non è limitato a) tag per prodotti concorrenti, blackhat SEO e keyword stuffing.
13 Restrizioni sull’autore del tema e sull’upload del tema
Invia solo un nuovo tema alla volta. Puoi inviare un numero illimitato di aggiornamenti per i tuoi temi esistenti presenti nella directory dei temi.
I nomi dei temi non possono essere “riservati” per un uso futuro.
Il tentativo intenzionale di sfruttare lacune nelle linee guida può portare alla sospensione.
Distribuzione di temi al di fuori della directory dei temi
Se distribuisci temi, puoi distribuire solo temi che sono al 100% compatibili con la GPL. In caso contrario, non puoi aggiungere temi alla Directory dei temi di WordPress.org (Vedi spiegazione).
Esempio: Se hai un account su Themeforest
Esempio: Se hai un account su Themeforest e stai vendendo temi su di esso, tutti quei temi devono dichiarare sulla pagina di vendita che sono compatibili al 100% con la GPL (Info).
Il tuo sito deve indicare che i prodotti che stai vendendo/distribuendo (gratuiti e a pagamento) sono compatibili con la GPL. Questa informazione deve essere facilmente reperibile per i visitatori.
Account di autore di temi multipli
Puoi avere più account con le seguenti restrizioni: Non puoi avere più di un (1) ticket aperto in nessuna delle segnalazioni/code di Trac o in fase di revisione. Ciò significa che non puoi avere contemporaneamente aperto un (1) ticket per un tema da un account e un altro ticket da un account secondario in nessuna delle code.
Il mancato rispetto del requisito sopra indicato comporterà la chiusura di tutti i ticket e la mancanza della possibilità di caricare nuovamente quei temi. Inoltre, un periodo di un (1) mese senza possibilità di caricare per ogni ticket chiuso. A seconda della gravità del caso, potresti anche ricevere un divieto permanente su tutti i tuoi account.
Per evitare penalizzazioni, il team chiede di dichiarare tutti i tuoi account inviando una email a themes[at]wordpress.org.
Ora che hai letto e ti sei assicurato che il tuo tema segua tutti i requisiti, sei il benvenuto nel caricare il tuo tema.