Cambiare il nome del 'Template Predefinito'

12 apr 2012, 16:06:05
Visualizzazioni: 22.3K
Voti: 5

Sto lavorando sul sito di un cliente e devono selezionare un Template ogni volta che aggiungono una nuova pagina; il "Template Predefinito" non è una scelta valida.

Vorrei rinominare "Template Predefinito" in qualcosa come "-- Seleziona Template --".

Cercando nel codice sorgente di WordPress ho trovato riferimenti a "Template Predefinito" che sono hard-coded, in wp-admin/includes/meta-boxes.php (riga 588) e wp-admin/includes/class-wp-posts-list-table.php (riga 882). Significa che attualmente non c'è modo di cambiarlo senza modificare il codice core (cosa che voglio evitare)?

4
Commenti

Puoi spiegare perché "Template Predefinito" non è una scelta valida?

Chip Bennett Chip Bennett
12 apr 2012 16:09:04

Perché sto usando Advanced Custom Fields e a seconda del tema che selezioni, appare un set completamente diverso di campi, non ce n'è uno che potremmo impostare come "Predefinito" e con cui saremmo soddisfatti.

Shaun Shaun
12 apr 2012 19:29:33

Ma qualcosa deve essere il predefinito. In WordPress, le Pagine statiche devono avere un Template e sempre ripiegheranno su page.php e poi su index.php.

Chip Bennett Chip Bennett
12 apr 2012 21:15:38

Potrebbe essere fatto con jQuery/JS immagino, se vuoi davvero imporlo, naturalmente un utente potrebbe aggirare la restrizione disabilitando JS o bloccando il file di script che impone la scelta del template.

t31os t31os
13 apr 2013 22:18:12
Tutte le risposte alla domanda 4
0

Esiste un filtro per questo dalla versione 4.1; vedi https://github.com/WordPress/WordPress/commit/7cdbac53e8497b346d1009375d36586fb6e5197c

Ora puoi utilizzare:

add_filter('default_page_template_title', function() {
    return __('Il mio nome template predefinito', 'your_text_domain');
});
18 nov 2015 14:30:00
1

Sono d'accordo con la risposta fornita da @TravisPflanz, ma se vuoi modificare solo il nome fornito dal core di WordPress puoi utilizzare il seguente filtro.

function yourprefix_filter_gettext( $translation, $text, $domain ) {
    if ( $text == 'Default Template' ) {
        return __( 'Pagina Dettaglio', 'your-theme-or-plugin-textdomain' );
    }
    return $translation;
}
add_filter( 'gettext', 'yourprefix_filter_gettext', 10, 3 );    

Questo sostituisce la traduzione predefinita del core con una personalizzata.

Per favore rinomina yourprefix e your-theme-or-plugin-textdomain secondo la tua configurazione

25 feb 2014 13:09:46
Commenti

Alcune note: i controlli stretti (===) sono più veloci. E dovresti rimuovere l'azione quando trovi la stringa. Questo filtro viene eseguito diverse migliaia di volte durante ogni richiesta e ha un grande impatto sulle prestazioni.

kaiser kaiser
25 feb 2014 13:43:44
2

Se non ho capito male, la tua richiesta è di creare una selezione vuota come predefinita per il menu a discesa dei template di pagina, per poi forzare l'utente a selezionare un template personalizzato.

Questa potrebbe essere una risposta eccessivamente semplificata, ma dovresti creare un template predefinito che sia una scelta valida, per poi offrire altri template come supplemento al "Template Predefinito". Basta che il predefinito sia il layout di pagina più basilare possibile. Questo eliminerà anche la confusione per l'utente. Devi solo determinare quale sarà il layout di pagina più comune e renderlo quello "Predefinito".

Come fa notare Chip nel commento sotto, il "Template Predefinito" esiste sempre, anche se provi a cambiargli nome usando i tradizionali metodi di denominazione dei template. Se cambi il nome del template di page.php, ti verranno semplicemente offerte le opzioni "Template Predefinito" e "Nuovo & Figo Template di Pagina".

12 apr 2012 16:21:40
Commenti

Il "Template Predefinito" esiste sempre, come definito dalla Gerarchia dei Template di WordPress per le Pagine statiche.

Chip Bennett Chip Bennett
12 apr 2012 17:08:54

OK grazie. Come ho commentato sopra, abbiamo davvero bisogno che scelgano un tema poiché non esiste uno stile valido che potremmo impostare automaticamente come "Predefinito" e con cui saremmo soddisfatti. Dovremo lasciarlo così com'è e dire loro di cambiare da "Tema Predefinito" a qualsiasi altro.

Shaun Shaun
12 apr 2012 19:31:24
0

Ho riscontrato problemi nell'utilizzare un nuovo page.php nel tema child per definire un template predefinito diverso, quindi invece ho utilizzato un

add_action( 'after_setup_theme'...

per impostare un'opzione globale utilizzando

update_option ('default_template','page-content.php');

Poi ho usato

function replace_page_attributes_metaboxes() {
    add_meta_box('post-parent', 'Attributi pagina', 'attributes_meta_box', 
             'page', 'side', 'high');
    remove_meta_box('pageparentdiv', 'page', 'side'); 
} 
add_action( 'admin_menu' , 'replace_page_attributes_metaboxes' );

per eliminare il metabox standard degli Attributi della Pagina che viene utilizzato per definire il Template della Pagina e sostituirlo con una copia del codice (vedi http://wpseek.com/page_attributes_meta_box/). Ho sostituito la sezione del codice che trova il nome del template della pagina con:

if ( ($post->post_type == 'page')  && (count( get_page_templates() ) != 0) ) {
    if (!empty($post->page_template))
        $template = $post->page_template;
    else
        $template =     get_option ('default_template');
}

se nessuna opzione viene trovata, $template viene impostato su false, il che fa sì che il codice sottostante utilizzi il template predefinito standard.

13 apr 2013 22:03:09