Schimbă numele șablonului 'Default Template'

12 apr. 2012, 16:06:05
Vizualizări: 22.3K
Voturi: 5

Lucrez la site-ul unui client și aceștia trebuie să selecteze un Șablon de fiecare dată când adaugă o pagină nouă; opțiunea "Default Template" nu este o alegere validă.

Aș dori să redenumesc "Default Template" în ceva de genul "-- Selectează Șablon --".

Căutând în codul sursă WordPress am găsit referințe la "Default Template" care sunt hard-codate în wp-admin/includes/meta-boxes.php (linia 588) și wp-admin/includes/class-wp-posts-list-table.php (linia 882). Asta înseamnă că momentan nu există o modalitate de a schimba acest lucru fără a modifica codul sursă (ceea ce vreau să evit)?

4
Comentarii

Poți să explici de ce "Șablon Implicit" nu este o opțiune validă?

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

Pentru că folosesc Advanced Custom Fields și în funcție de tema pe care o selectezi, apare un set complet diferit de câmpuri, nu există unul pe care l-am putea seta ca "Implicit" și cu care am fi mulțumiți.

Shaun Shaun
12 apr. 2012 19:29:33

Dar ceva trebuie să fie implicit. În WordPress, Paginile statice trebuie să aibă un Șablon și întotdeauna vor reveni la page.php și apoi la index.php.

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

Se poate realiza cu jQuery/JS cred, dacă chiar dorești să o impui, dar în mod natural un utilizator ar putea ocoli restricția prin dezactivarea JS sau blocarea fișierului script care impune alegerea unui șablon.

t31os t31os
13 apr. 2013 22:18:12
Toate răspunsurile la întrebare 4
0

Există un filtru pentru aceasta începând cu versiunea 4.1; vezi https://github.com/WordPress/WordPress/commit/7cdbac53e8497b346d1009375d36586fb6e5197c

Acum poți folosi:

add_filter('default_page_template_title', function() {
    return __('Numele meu implicit pentru șablon', 'your_text_domain');
});
18 nov. 2015 14:30:00
1

Sunt de acord cu răspunsul dat de @TravisPflanz, dar dacă doriți doar să schimbați numele furnizat de nucleul WordPress, puteți utiliza următorul filtru.

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

Aceasta înlocuiește traducerea implicită a nucleului cu una proprie.

Vă rugăm să redenumiți yourprefix și your-theme-or-plugin-textdomain conform configurației dumneavoastră

25 feb. 2014 13:09:46
Comentarii

Câteva observații: verificările stricte (===) sunt mai rapide. Și ar trebui să elimini acțiunea după ce ai găsit șirul de caractere. Acest filtru rulează de mai multe mii de ori în timpul fiecărei cereri și are un impact mare asupra performanței.

kaiser kaiser
25 feb. 2014 13:43:44
2

Cererea ta, dacă nu greșesc, este să creezi o selecție goală ca valoare implicită pentru meniul derulant al șabloanelor de pagină, apoi să forțezi utilizatorul să selecteze un șablon personalizat.

Acesta poate fi un răspuns simplist, dar ar trebui să creezi un șablon implicit care să fie o alegere validă, apoi să oferi alte șabloane ca supliment la "Șablonul Implicit". Pur și simplu fă ca șablonul implicit să fie cel mai simplu layout posibil pentru pagină. Acest lucru va elimina și confuzia pentru utilizator. Doar determină care va fi cel mai comun layout de pagină și fă-l "Implicit".

După cum subliniază Chip mai jos, "Șablonul Implicit" există întotdeauna, chiar dacă încerci să-i schimbi numele folosind metodele tradiționale de denumire a șabloanelor. Dacă schimbi numele șablonului page.php, pur și simplu vei avea opțiunile "Șablon Implicit" și "Șablon Nou & Cool".

12 apr. 2012 16:21:40
Comentarii

Șablonul "Implicit" există întotdeauna, așa cum este definit în Ierarhia de Șabloane WordPress pentru Pagini statice.

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

OK, mulțumesc. După cum am menționat mai sus, chiar avem nevoie ca ei să aleagă o temă, deoarece nu există un stil potrivit pe care l-am putea seta automat ca "Implicit" și cu care să fim mulțumiți. Va trebui să lăsăm lucrurile așa cum sunt și să le spunem să schimbe din "Tema Implicită" în oricare alta.

Shaun Shaun
12 apr. 2012 19:31:24
0

Am întâmpinat probleme la utilizarea unui nou fișier page.php în tema copil pentru a defini un șablon implicit diferit, așa că în schimb am folosit un

add_action( 'after_setup_theme'...

pentru a configura o opțiune globală folosind

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

Apoi am utilizat

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

pentru a șterge cutia meta standard Atribute Pagină care este folosită pentru a defini Șablonul Paginii și a o înlocui cu o copie a codului (vezi http://wpseek.com/page_attributes_meta_box/). Am înlocuit secțiunea de cod care găsește numele șablonului paginii cu:

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');
}

dacă nu se găsește nicio opțiune, $template este setat la false, ceea ce face ca codul de bază să selecteze șablonul implicit standard.

13 apr. 2013 22:03:09