Lavorando con WordPress ogni singolo giorno, anche il più esperto impara sempre nuove cose e modi di interagire con il codice di questo CMS.
Vorrei consigliare a tutti, esperti e non, che quando dovete costruirvi una funzione o comunque realizzare un pezzo di codice custom, se non vi torna scrivendolo di getto (perchè magari una variabile deriva da altre, a loro volta combinate ecc.), scrivete cosa vi serve fare a parole, un piccolo schema o una frase, su un pezzo di carta o dove vi pare. Una breve frase descrittiva vi aiuterà ad identificare meglio i tipi di dati che vi servono, e come ottenerli uno per uno.
Soluzione poco tecnologica se volete, ma a volte ci sono cose che se non le visualizziamo e organizziamo per bene, creano solo confusione in testa.
Comincio questa quinta edizione dei WordPress Tricks con un piccolo ma utile snippet per calcolare, in una pagina di categoria (ma anche tassonomia e archivio), non solo il numero di risultati trovati (post o contenuti pubblicati in essa), ma anche quanti risultati si vedono in ciascuna pagina.
$risultati = $wp_query->found_posts; //se usate questo codice per una query custom, usate il nome di quella al posto di $wp_query $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $ppp = get_option('posts_per_page'); $pd = $ppp * $paged; if ( $paged > 1 ) { //se siamo a pagina 2 e oltre echo '<p class="result">'._n( 'Result', 'Results', $risultati, 'nome_pot' ).' '.(($pd - $ppp)+1).' - '.$pd.' di '.$risultati.'</p>'; } else { //se è la prima pagina echo '<p class="result">'._n( 'Result', 'Results', $risultati, 'nome_pot' ).' 1 - '.$wp_query->post_count.' di '.$risultati.'</p>'; }
Qui invece, prendiamo tutti i dati utili, quando siamo all’interno di una pagina archivio custom, per un term di una taxonomy custom.
Questi dati ci torneranno molto utili se abbiamo molti term e sottoterm.
<?php global $post, $wp_query; $current_cat = get_queried_object(); $taxonomy_term = $wp_query->query_vars['term']; $term = get_term_by('slug', $wp_query->query_vars['term'], $wp_query->query_vars['taxonomy'] ); // TERM $term_id = $term->term_id; $term_name = $term->name; $term_slug = $term->slug; $taxonomy_slug = $term->taxonomy; $parent_id = $term->parent; //from term // PARENT OF TERM -> questo serve nel caso in cui siamo in un sottoterm e vogliamo i dati del parent term, se esiste if ($parent_id !== 0) : $parent_stuff = get_term_by( 'id', $parent_id, $taxonomy_slug); $parent_name = $parent_stuff->name; $parent_slug = $parent_stuff->slug; $parentid = $parent_stuff->term_id; //from parent itself x doublecheck? endif; ?> //Adesso potete usare tutte queste belle variabili per costruirvi un template super personalizzato per una categoria (più propriamente "term") custom che avete creato. // Ricordatevi che il prefisso per gli archive dei term è sempre taxonomy-nome_term.php, il quale ha priorità sull'archive.php
Visto che per un progetto attualmente sto usando un file pot con l’inglese (con le sue traduzioni in italiano ecc.) come lingua standard, vi faccio vedere un esempio di come diversificare le traduzioni per parole singolari/plurali.
Da tenere presente, che sarebbe meglio creare il vostro .pot di riferimento, o comunque il .po, con lo stesso nome del dominio.
Questo esempio in particolare è usato dentro un search.php, quando contati il numero di risultati della query, ho bisogno di avere una traduzione diversa nel caso ci sia un risultato solo oppure tanti.
<?php if(have_posts()) : $risultati = $wp_query->found_posts; //questo mi dà esattamente il numero di post trovati printf( _n( 'There is', 'There are', $risultati, 'nome_pot' ), $risultati ); echo ' '.$risultati.' '; printf( _n( 'result', 'results', $risultati, 'nome_pot' ), $risultati ); echo ' '; _e( 'for', 'nome_pot' ); echo " '"; the_search_query(); echo "'"; /* ... il resto del loop va qui col resto... while (have_posts()) : the_post(); ... endwhile; endif; */ ?>
Buon codice a tutti :)