Lettura: 5,9 minuti

Visite: 5

Lettura: 5,9 minuti

Visite: 5

TAG: 

Nei temi esistono i template personalizzabili delle pagine: si crea una pagina .php sotto la cartella Template del proprio tema e come commento nella intestazione della pagina si usa :
/* Template Name: IL Mio Template */
Poi nella singola pagina WP basta cambiare il template da default a “IL Mio Template”.

Ma come fare quando vogliamo creare il template di una pagina, ma tramite il plugin e non il tema?

In realtà ci sono diverse piccole soluzioni:

  • Si può creare uno [shortcode] da inserire in pagina, e invece di selezionare il modello si inserisce ogni volta lo shortcode
    • VANTAGGI: metodo veloce, Header e il Footer rimangono quelli predefiniti e si cambia solo il contenuto
    • SVANTAGGI: non si possono alterare Header e il Footer in modo diretto, non si può sovrascrivere la grafica totale del sito.
  • Si può aggiungere nell’elenco template page una propria pagina add_filter( ‘theme_page_templates’), e poi associare a quel nome page template un template del plugin add_filter( ‘page_template’)
    • VANTAGGI: sovrascrive tutto il contenuto della pagina anche Header e Footer che se non richiamati correttamente non appaiono.
    • SVANTAGGI: Header e il Footer devono essere richiamati, non ci sarà la gerarchia del tema installato per i contenuti, ma pagina bianca.

Aggiungere un Template Page con Shortcode nel plugin

Il procedimento è molto semplice: si crea uno shortcode nel proprio plugin e poi si inserisce nella pagina che vogliamo usare con il template, tramite editor delle pagina wp nell’admin. Questo ha il vantaggio di essere molto veloce e pratico, ma lo svantaggio che non si possono gestire i contenuti fuori dal contenuto pagina (per intenderci non possiamo modificare header e il footer quando vengono richiamati, o il contenitore primario del contenuto pagina).

ALTRA GUIDA: Crea uno [shortcode] personale

Aggiungi lo Shortcode al template del tema e non nel testo della pagina Admin

Può essere comodo per le pagine che riprendono spesso lo stesso contenuto (lo stesso template) non inserire lo shortcode in ogni pagina, ma creare un template del tema che richiama lo shortcode.

In questo caso creare un classico template nel tema child Theme, con un nome a noi familiare.
Andare nei file del tema figlio, creare la cartella “template” se non esiste, inserire il file pagina del nostro template (es: pagina_luccaanno.php). Poi dentro il file creato inserire il Tag che lo fa diventare un template pagina selezionabile su WP (es: /* Template Name: Pagina – Grafica LuccaAnno */); e infine copiare e incollare il codice dal file page.php del tema genitore. In questo modo abbiamo il nostro nuovo template con la struttura grafica delle pagine del tema.

Il passaggio sucessivo è sostituite il contenuto con il nostro Shortcode: quindi dove troviamo the_content(); nella pagina, sostituiamo con il seguente codice: se esiste lo shortcode in WP usalo, altrimenti inserisci il normale testo. Tutto questo con la premessa che lo shortcode è stato già creato nelle pagine del plugin.

/*   the_content(); */

if ( shortcode_exists( 'kaPl_LFSupTheme_TemplateLuccaAnno' ) ) {
                echo  do_shortcode('[kaPl_LFSupTheme_TemplateLuccaAnno]');
 } else {    the_content();  }

Aggiungere un Template sostitutivo tramite Funzione nel plugin

Per aggiungere il nostro template nell’elenco di quelli selezionabili nella tendina dei Page Template è necessario utilizzare 2 filtri WP:

  • add_filter( ‘theme_page_templates’) filtro WP
    serve per creare una voce template nella lista dei template caricati in WP (senza passare dal Tag commento /* Template Name: IL Mio Template */)
  • add_filter( ‘page_template’) filtro WP
    Serve ad associare al nostro Page Template appena creato una pagina .php che contenga il suo template grafico. ‘page_template’ fa parte di una funzione di richiamo specifico di template WP ( apply_filters (“{$type}_template”) vedi sotto ) che permette di filtrare il template finale delle pagine. Tramite questa funzione possiamo aggiungere una condizione “se la pagina ha questo template” utilizza questo file .php come template.

Nota : “global $plugin_dir_path;” -> Ricordarsi di generare nel plugin l’indirizzamento per poter richiamare correttamente i file del plugin. VEDI GUIDA QUI

PHP
<?php



/**  add_filter( 'theme_page_templates')
 *  [it] Aggiungi un "Page Template" alla lista dei template selezionabili per le pagine.
 *   ricorda di associare un file .php a questo template con il filtro add_filter( 'page_template')
 * 
 * @since           1.0.0
 * @version 		1.0 
 * @last-change 	21 apr 2023 
 */
add_filter( 'theme_page_templates', 'kaPl_template_to_select', 10, 4 );
function kaPl_template_to_select( $post_templates, $wp_theme, $post, $post_type ) {

    // Add custom template named template-custom.php to select dropdown 
    $post_templates['templatepage_LA.php'] = __('kaPlLFST - Pagina LA');

    return $post_templates;
}


/** add_filter(  'page_template') -> funzione generizzata:    apply_filters( "{$type}_template")
 *  [it] Aggiunge una condizione prima di caricare il template delle pagina (tutte le pagine), se la pagina ha un determinato Page template,
 *       Richiamare il file in questione e non il classico template
 * @since           1.0.0
 * @version 		1.0 
 * @last-change 	21 apr 2023 
 */
add_filter( 'page_template', 'kaPl_template_add_condtion' );
function kaPl_template_add_condtion( $page_template ){

	global $plugin_dir_path;  

    if ( get_page_template_slug() == 'templatepage_LA.php' ) {
        $page_template = $plugin_dir_path . 'template/templatepage_LA.php';
    }
    return $page_template;
}
  
?>
PHP

Disccussione argomento su stackexchange

Cambiare i modelli di template di default o filtrarli

apply_filters (“{$type}_template”) Wp Filtro

Attenzione ! La sostituzione di modelli di default comporta il completo cambio del modello, e quindi non saranno richiamati Header e Footer del tema e la gerarchia < div > prima del contenuto.

Come anticipato dalla funzione indicata sopra add_filter( ‘page_template’), WP permette di alterare il file template predefinito solitamente visibili nel tema con file .php personalizzati utilizzando questo filtro. {$type} rappresenta l’identificativo dei template di default sotto indicati:

404_template, archive_template, attachment_template, author_template, category_template, date_template, embed_template, frontpage_template, home_template, index_template, page_template, paged_template, privacypolicy_template, search_template, single_template, singular_template, tag_template, taxonomy_template,

Ad ogni uno di essi si può cambiare il file di destinazione come dall’esempio qui sotto:

add_filter( "taxonomy_template", 'load_our_custom_tax_template');
function load_our_custom_tax_template ($tax_template) {
  if (is_tax('custom-tax-name')) {      $tax_template = dirname(  __FILE__  ) . '/templates/custom-taxonomy-template.php';  }
  return $tax_template;
}

Contenuto della Guida

  • La rubrica dei Plugin

    (0)

  • Guide sulla programmazione

    (0)

  • SEO

    (2)

Scopri articoli correlati