Oggi voglio esaminare alcune delle cose da fare e non fare nel tema WordPress. Indipendentemente dal fatto che tu stia creando un tema WordPress per te stesso o che tu ne stia creando uno da rilasciare in modo che altri possano usarlo, dovresti seguire queste cose da fare e non fare il più fedelmente possibile.
1. Non codificare URL completi nel tuo tema
Quando crei i tuoi temi, potrebbero esserci momenti in cui vengono utilizzate immagini, per icone di social media o icone di feed RSS, e durante questi punti della tua codifica, potresti voler codificare l'URL completo (ad esempio: /wp-content/themes/nome-tuo-tema/images/image.jpg) ma ciò causerà errori sul sito Web ogni volta che la persona che utilizza il tuo tema cambia il nome della sua cartella del tema.
I codici corretti da utilizzare per recuperare dinamicamente gli URL completi sono riportati di seguito.
<?php bloginfo('stylesheet_directory'); ?>/images/image.jpg
2. Utilizza il più possibile i tag del modello
WordPress fa un ottimo lavoro nel presentare tutti i tag del modello che puoi utilizzare, quindi fai un favore a te stesso (così come alle altre persone che potrebbero utilizzare i tuoi temi) e impara i tag del modello di WordPress - quindi utilizzali il più possibile. Utilizzando i tag del modello, sei in grado di garantire che i tuoi temi non si rompano o causino errori quando l'utente finale lo imposta e lo mette in funzione.
3. Non dimenticare i codici a discesa per la navigazione
Quando crei il tuo tema WordPress, un elemento che sembra essere trascurato sono i codici a discesa per la tua navigazione. Certo, alcuni temi potrebbero avere la navigazione impostata per non utilizzare gli ul multilivello, mantenendo tutto in un'unica riga, ma cosa succede a quelli di noi che hanno più pagine figlie per ogni pagina genitore principale?
C'è una soluzione per questo. Puoi consultare alcuni dei tutorial qui sotto su come codificare menu a discesa multilivello.
- Come implementare una barra di navigazione multilivello perfetta
- Menu di navigazione a discesa multilivello: esempi e tutorial
- Menu multilivello con jquery e css
4. Rendi il tuo tema pronto per i widget
Secondo me, come utente finale, non c'è niente di peggio che distribuire un tema e prepararsi a impostare tutto, solo per accorgersi che ora mi trovo di fronte al compito di cercare di personalizzare sezioni dei miei temi codificando informazioni al loro interno. Le tue barre laterali e varie altre aree del tuo tema (hai un piè di pagina a tre colonne? Rendilo widgetizzabile!) dovrebbero essere il più facili possibile da modificare. È una delle cose più semplici da fare ai tuoi temi e beneficerà molto gli utenti del tuo tema.
Automattic ha un ottimo tutorial su come rendere il tuo tema widgetizzabile. Consultalo qui.
Assicurati anche di consultare il tutorial sui temi widgetizzabili qui su Theme Lab.
5. Non far dipendere gli utenti da numerosi plugin affinché il tuo tema funzioni
Se stai rilasciando temi gratuitamente o creando temi WordPress commerciali, dovresti tenere conto del miglior interesse dei tuoi utenti finali quando costruisci i tuoi temi. Ingombrare i tuoi temi con 5-10 plugin necessari non solo causerà frustrazione alle persone durante il download e l'installazione del tuo tema sul loro sito, ma causerà anche il mancato download da parte di molte persone perché, ammettiamolo, le persone non hanno una capacità di attenzione superiore a 2-3 secondi.
Ad esempio, se hai intenzione di impostare la paginazione nel tuo tema, perché non utilizzare questo articolo per imparare come impostarla automaticamente nel tuo tema. Cats Who Code ha un tutorial abbastanza buono su come aggiungere la paginazione al tuo tema senza bisogno di attivare un plugin.
6. Mostra il termine di ricerca nella pagina dei risultati di ricerca
Per qualche motivo, questo è un consiglio spesso trascurato che puoi (e dovresti) implementare nei tuoi temi. È un semplice codice di una riga che consente al tuo tema di ricordare al visitatore cosa ha appena cercato. Può sembrare banale, ma è utile, quindi se i risultati non restituiscono alcun post, il visitatore conosce la frase esatta che ha cercato e può quindi digitare un termine di ricerca diverso.
Di seguito è riportato il codice utilizzato per sostituire il titolo corrente "Risultati della ricerca" nel tuo tema.
<h2>Search Results for <em><?php the_search_query() ?></em> </h2>
7. Non fare le cose a metà per le tue pagine di errore 404
Invece di lasciare che la tua pagina 404 dica semplicemente "404 - pagina non trovata", perché non offrire ai tuoi visitatori altre opzioni? Aggiungere un elenco di categorie, post recenti, post popolari, una casella di ricerca e (se desideri monetizzare la tua pagina 404) una pubblicità può dare un po' di pepe alla tua pagina 404 rispetto a quelle noiose e inutili che si trovano nella maggior parte dei temi WordPress.
Se stai cercando ispirazione per pagine 404, Smashing Magazine ha una fantastica vetrina di pagine 404 da tutto il web che vale la pena controllare.
8. Assicurati di avere tutti i file di base nella cartella del tuo tema
Quando costruisci un tema WordPress, assicurarsi di poterlo personalizzare il più possibile fin dall'inizio è essenziale. Iniziare con una combinazione di file index.php, header.php, sidebar.php e footer.php potrebbe sembrare una buona idea per i minimalisti, ma suggerirei di iniziare con tutte le basi sottostanti per darti un po' più di controllo su cosa viene visualizzato - quando, dove e come.
- style.css
- header.php
- index.php
- sidebar.php
- footer.php
- single.php
- page.php
- comments.php
- 404.php
- functions.php
- archive.php
- searchform.php
- search.php
Per ulteriori informazioni su questi file di template e su cosa fanno, consulta la pagina gerarchia dei template su WordPress.org.
9. Non dimenticare l'integrazione RSS
Quando stai creando il tuo blog, uno degli elementi che attira maggiormente l'attenzione delle persone è la possibilità di iscriversi al tuo blog tramite un lettore RSS. Quindi, invece di richiedere agli utenti del tuo tema di aggiungere manualmente queste informazioni, perché non fare i passi necessari per aggiungere una casella di iscrizione RSS proprio come fai per la casella di ricerca. Aggiungi un pulsante RSS, un'opzione di iscrizione via email e puoi anche aggiungere il numero di iscritti in testo aggiungendo questo pezzo di codice al tuo tema dove desideri che venga visualizzato (sostituisci "feedburner-id" con il tuo ID FeedBurner - se stai rilasciando questo tema pubblicamente, dai un'occhiata al punto #11 della nostra lista e assicurati di averlo come opzione).
<?php
//get cool feedburner count
$whaturl="http://api.feedburner.com/awareness/1.0/GetFeedData?uri=feedburner-id";
//Initialize the Curl session
$ch = curl_init();
//Set curl to return the data instead of printing it to the browser.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//Set the URL
curl_setopt($ch, CURLOPT_URL, $whaturl);
//Execute the fetch
$data = curl_exec($ch);
//Close the connection
curl_close($ch);
$xml = new SimpleXMLElement($data);
$fb = $xml->feed->entry['circulation'];
echo $fb;
//end get cool feedburner count
?>
10. Aggiungi stili CSS per i commenti a cascata
Se stai creando un tema, dovresti essere sempre preparato per i commenti a cascata. È una funzionalità di WordPress che molti blog utilizzano per creare interazione nella loro sezione commenti. Quindi, preparare il tuo foglio di stile per i commenti a cascata è un'ottima idea. Chris ha un ottimo post sui codici CSS per le classi CSS predefinite che WordPress genera nella loro sezione commenti, dando al tuo tema una sezione commenti stilizzata senza dover toccare il file comments.php.
11. Non rilasciare un tema senza un pannello delle opzioni
Alcune persone potrebbero non essere d'accordo, ma credo che faccia parte della naturale progressione dei temi di WordPress. Se il tuo tema non dispone di un qualche tipo di pannello delle opzioni di WordPress con la possibilità di modificare, personalizzare e cambiare elementi nel tuo tema senza dover modificare il codice, stai facendo qualcosa di sbagliato.
Se non sei sicuro su come creare il tuo pannello delle opzioni del tema, i link qui sotto ti mostreranno come fare.
- Crea pannelli di opzioni personalizzati con WordPress 2.9
- Come creare un pannello delle opzioni di WordPress migliore
12. Assicurati che i tuoi temi funzionino subito
Questo va di pari passo con il punto #5 della nostra lista: dovresti sempre assicurarti che i tuoi temi funzionino subito. Alcuni temi che ho visto richiedono 5-6 passaggi prima che il tema sia utilizzabile sul sito, inclusa, ma non limitata a, l'attivazione di plugin e la modifica/salvataggio del pannello delle opzioni del tema. Se il tema richiede determinate cose, assicurati che ci sia un elemento predefinito di backup.
Ad esempio, nel pannello delle opzioni del tuo tema che stai creando e/o utilizzando, assicurati che ci siano informazioni predefinite in ogni sezione, in modo che le cose vengano visualizzate, indipendentemente dal fatto che l'utente finale le abbia aggiornate o meno. Lo stesso vale per i plugin, se stai utilizzando un plugin di paginazione di WordPress nel tuo tema, perché non codificarlo in modo che il tema ritorni ai link precedente/successivo se il plugin non è attivo.
13. Non fare un uso eccessivo dei campi personalizzati
Sì, la maggior parte dei temi WordPress in stile rivista di un paio d'anni fa erano costruiti utilizzando campi personalizzati ad ogni svolta, ma la maggior parte delle persone non vorrà effettivamente compilare 3, 4 o 5 campi personalizzati per ogni post. Quindi, rendi le cose più facili per loro. Se hai intenzione di mostrare un'immagine dal post nella home page del tuo tema, prendi questo pratico pezzo di codice e aggiungilo al file functions.php del tuo tema e prenderà automaticamente la prima immagine dei post, senza bisogno di un campo personalizzato.
// Get URL of first image in a post
function catch_that_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];
// no image found display default image instead
if(empty($first_img)){
$first_img = "/images/default.jpg";
}
return $first_img;
}
Una volta aggiunto quel codice, aggiungi semplicemente <?php echo catch_that_image(); ?> nei file del tuo tema ovunque tu voglia che l'immagine appaia.
Grazie ai vecchi forum di supporto di WordPress per questo utile consiglio.
14. Fai SEO per il tuo tag <title>
Un ottimo modo per garantire che il tuo tema sia il più pronto possibile per la SEO è rimuovere il tag <title> predefinito presente nel file header.php del tuo tema e sostituirlo con i codici sottostanti. Darà ai titoli del tuo tema un po' più di spinta e aiuterà gli sforzi SEO che gli utenti del tuo tema vorranno mettere in pratica, il tutto senza richiedere loro di toccare nulla.
<?php if ( is_home() ) { ?><? bloginfo('name'); ?> | <?php bloginfo('description'); ?><?php } ?>
<?php if ( is_search() ) { ?>Search Results for <?php /* Search Count */ $allsearch = &new WP_Query("s=$s&showposts=-1"); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; _e(''); echo $key; _e(' — '); echo $count . ' '; _e('articles'); wp_reset_query(); ?><?php } ?>
<?php if ( is_404() ) { ?><? bloginfo('name'); ?> | 404 Nothing Found<?php } ?>
<?php if ( is_author() ) { ?><? bloginfo('name'); ?> | Author Archives<?php } ?>
<?php if ( is_single() ) { ?><?php wp_title(''); ?> | <?php $category = get_the_category(); echo $category[0]->cat_name; | <?php bloginfo('name'); ?><?php } ?>
<?php if ( is_page() ) { ?><? bloginfo('name'); ?> | <?php $category = get_the_category(); echo $category[0]->cat_name; ?>|<?php wp_title(''); ?><?php } ?>
<?php if ( is_category() ) { ?><?php single_cat_title(); ?> | <?php $category = get_the_category(); echo $category[0]->category_description; ?> | <? bloginfo('name'); ?><?php } ?>
<?php if ( is_month() ) { ?><? bloginfo('name'); ?> | Archive | <?php the_time('F, Y'); ?><?php } ?>
<?php if ( is_day() ) { ?><? bloginfo('name'); ?> | Archive | <?php the_time('F j, Y'); ?><?php } ?>
<?php if (function_exists('is_tag')) { if ( is_tag() ) { ?><?php single_tag_title("", true); } } ?> | <? bloginfo('name'); ?>
15. Non dimenticare i breadcrumb
Come pezzo aggiuntivo di navigazione nei tuoi temi, i breadcrumb (secondo me) dovrebbero essere utilizzati il più possibile. Non è solo un bene per scopi SEO, ma consente anche al visitatore di navigare nel tuo sito molto più velocemente. Esistono plugin WordPress per i breadcrumb, ma grazie a Cats Who Code, ora sappiamo come aggiungere una funzione breadcrumb ai nostri temi WordPress.
Innanzitutto, aggiungi i codici sottostanti al file functions.php del tuo tema (personalizzato un po' rispetto al post originale di Cats Who Code, linkato sopra).
function the_breadcrumb() {
echo '<ul id="crumbs">';
if (!is_home()) {
echo '<li><a href="';
echo get_option('home');
echo '">';
echo 'Home';
echo "</a></li>";
if (is_category() || is_single()) {
echo '<li>';
the_category(' </li><li> ');
if (is_single()) {
echo "</li><li>";
the_title();
echo '</li>';
}
} elseif (is_page()) {
echo '<li>';
echo the_title();
echo '</li>';
}
}
elseif (is_tag()) {single_tag_title();}
elseif (is_day()) {echo"<li>Archive for "; the_time('F jS, Y'); echo'</li>';}
elseif (is_month()) {echo"<li>Archive for "; the_time('F, Y'); echo'</li>';}
elseif (is_year()) {echo"<li>Archive for "; the_time('Y'); echo'</li>';}
elseif (is_author()) {echo"<li>Author Archive"; echo'</li>';}
elseif (isset($_GET['paged']) && !empty($_GET['paged'])) {echo "<li>Blog Archives"; echo'</li>';}
elseif (is_search()) {echo"<li>Search Results"; echo'</li>';}
echo '</ul>';
}
Successivamente, posiziona questo pezzo di codice ovunque tu voglia che i tuoi breadcrumb vengano visualizzati.
<?php the_breadcrumb(); ?>
Grazie per aver letto l'articolo
Grazie per aver dedicato del tempo a leggere l'articolo. Spero che ti sia piaciuto e che tu abbia imparato qualcosa lungo la strada, io l'ho fatto. Se ti è piaciuto il post o hai qualcosa da aggiungere, faccelo sapere nei commenti.
ottimo post. Grazie per aver condiviso
Se stai lavorando su un framework solido, la maggior parte di questi sarà integrata.
Fantastici consigli su cosa fare e cosa non fare.
#9 Non dimenticare l'integrazione RSS, è una pessima idea se, come sembra, hai intenzione di farlo ad ogni caricamento della pagina. Esso;
a) farà una richiesta per ogni caricamento della pagina per qualcosa che non ha bisogno di essere fatto ogni volta
b) attenderà il timeout predefinito di curl in caso di problemi di rete o problemi con l'API, il che si tradurrà in utenti infastiditi e più carico poiché le persone premono aggiorna.
c) potresti essere bloccato se sei impegnato e stai martellando la loro API.
Molto meglio sarebbe prendere il tuo script e farlo produrre un file statico utilizzando cron periodicamente e caricarlo nel template. In questo modo gli utenti finali non avranno pagine bloccate, puoi impostare un timeout più lungo e aggiungere il controllo degli errori e anche il tuo server non sarà sovraccarico.
Mi è piaciuto leggere questo post. Ho pensato che per la maggior parte ogni idea fosse abbastanza azzeccata.
Ottimo articolo, ho imparato un paio di cose qui 🙂 Dovrò ricordarmi di questo post la prossima volta che farò un tema personalizzato. A proposito, per tutti, ottimi commenti che hanno aggiunto valore all'articolo stesso.
La cosa che mi è capitata è una libreria javascript che usa immagini (facebox per es.): non è così facile far comportare lo script. Ho rinominato il javascript in .js.php e modificato il link alle immagini referenziate per iniziare con:
/images/myimage.gif
Funziona benissimo :)
Ottimo riassunto!
Ho iniziato a leggere questo prima stasera. Poi sono uscito a bere qualche cocktail...
Buona lettura.. Alcune verità e alcune non così importanti..
Sono a conoscenza di tutto questo quando costruisco un tema, 😉
Non sono d'accordo con il primo punto, almeno se stai costruendo il tema per te stesso. Usare il percorso completo riduce il numero di chiamate al database e velocizza il tempo di caricamento del tuo sito. Naturalmente, se lo stai costruendo per venderlo o spostarlo molto, non hai altra scelta che usare la chiamata URL temporanea.
Inoltre, la maggior parte dei temi, quando costruiti specificamente per un cliente, non per venderli più volte su un sito di temi, non hanno bisogno di un pannello di opzioni. Questo è semplicemente eccessivo poiché hanno già approvato il design e la maggior parte non pagherà i soldi extra per uno. Il tuo tema dovrebbe funzionare bene con poca o nessuna configurazione.
Ciao Amber, hai ragione, alcuni di questi punti non si applicherebbero ai temi per clienti singoli. Ad esempio, se un cliente non ha bisogno/non vuole un pannello di opzioni, widget e altre cose del genere. Mettere semplicemente un pannello di opzioni per il gusto di farlo sarebbe probabilmente una perdita di tempo (e anche dei loro soldi).
Per i temi rilasciati, tuttavia, avere una qualche forma di pagina delle opzioni è quasi atteso dai nuovi temi WordPress. Non devono essere super avanzati, ad esempio, uso semplici pagine delle opzioni solo per cambiare lo schema di colori di un tema senza dover modificare il codice. Questo può essere particolarmente utile per gli utenti MU che non hanno accesso per modificare il codice da soli.
Riguardo al primo punto, se il tema verrà utilizzato solo su un URL, allora l'URL dell'immagine potrebbe probabilmente essere codificato in modo fisso senza problemi.
Anche se per i temi utilizzati su più di un sito (o praticamente qualsiasi tema distribuito) penso che codificare le immagini sia un chiaro divieto.
Inoltre, parte del punto è che ho visto temi che chiamano immagini come
<?php bloginfo('url'); ?>/wp-content/themes/theme-name/images/image.jpgche avrebbero comunque una chiamata al database, ma si romperebbero se l'utente dovesse mai cambiare la directory del tema.La maggior parte di queste chiamate sono memorizzate nella cache, quindi è solo la prima chiamata che interroga effettivamente il database.
Uso queste funzioni. Non mi piace molto il modo get_bloginfo
Ci sono molte buone funzioni nel file theme.php.
get_template_directory_uri()
get_stylesheet_directory_uri()
admin_url()
site_url()
plugins_url()
includes_url()
content_url()
home_url() arriverà con la versione 3.0.
Il pannello delle opzioni è consigliato anche per un cliente che lo usa una sola volta, nel caso in cui il cliente voglia cambiare del testo che altrimenti sarebbe codificato nel tema (come avvisi legali ecc.).
I miei clienti usano solitamente WordPress come CMS, quindi a volte vogliono includere pagine nel menu di navigazione. Codificare gli ID dei post per quelle pagine nel menu di navigazione sarebbe inflessibile per i clienti a lungo termine, quindi di nuovo, una sorta di pannello di configurazione sarebbe un bel tocco.
Ottimo materiale. Grazie per aver condiviso!
Ciao Mike,
L'hack ‘13. Non fare un uso eccessivo dei campi personalizzati’ non sempre deve funzionare su tutti i temi di WordPress. Come non ha funzionato su gonzoblog.nl ...
Ma ho capito qual era il problema. In alcuni temi questo hack mostra solo l'URL della tua prima immagine e non l'immagine effettiva! Cambia il codice per la tua pagina (principale) in:
<img src="<?php echo catch_that_image() ?>" alt="" class="th" /><!--formatted-->Ora hai un'immagine sulla tua pagina! Nel gonzoblog la mia prima immagine è un divisore/spaziatore per il primo paragrafo, quindi ho avuto un altro problema. L'immagine che volevo mostrare è sempre la seconda immagine, quindi ho dovuto risolvere anche quella!
Sostituisci questa riga in functions.php, e la tua seconda immagine apparirà sulla tua homepage:
$first_img = $matches [1] [1]; //Imposta per mostrare la seconda immagine, prima immagine: [1] [0]
Quindi, per tutte quelle persone che hanno visto solo l'URL nella loro pagina principale, ... questa è la soluzione!
LOL ;-P
Penso che il numero 9 sia sbagliato. La nuova chiamata API è qualcosa del tipo http://www.wprecipes.com/how-to-display-your-feedburner-count-in-full-text
E una soluzione migliore che usa un file txt per la cache è questa http://www.mdj.us/web-development/php-programming/use-php-curl-to-get-your-google-feedburner-subscriber-count-text-with-result-caching/
Grazie Eugen, per i link. Uso il #9 su http://www.guerrillafreelancing.com ma non guardo le versioni più recenti da un po'. Le controllerò sicuramente.
Per sbagliato intendi che è obsoleto per la nuova API e/o semplicemente non funziona più?
Aggiornerò il post con quei due link, grazie.
L'API è obsoleta.
per il n. 1 è meglio usare bloginfo(‘template_directory’);
http://codex.wordpress.org/Theme_Development#Referencing_Files_From_a_Template
stylesheet_directory dovrebbe essere usato solo nei temi figli per fare riferimento alla directory del tema figlio.
Ciao Magnus, grazie per il suggerimento.
Personalmente uso solitamente bloginfo(‘template_url’) anche se pensavo fossero tutti abbastanza intercambiabili? A parte stylesheet_directory che è usato principalmente per i temi figli.
C'è qualche vantaggio nell'usarne uno rispetto all'altro?
Grazie Magnus. Ero come Leland, non ci ho pensato troppo e pensavo fossero intercambiabili, tuttavia non mi sono addentrato troppo nei temi figli, quindi non sono molto 'informato' su queste cose.
Elenco eccellente.
Concordo soprattutto con il n. 12. Il tema dovrebbe tornare a un'opzione predefinita se la funzionalità avanzata che si basa su un plugin non è disponibile.