WordPress temasını ayarlama daha
Yenileme: Bu makale, Kaynak Plakası ayarlama temalarında yapılan değişiklikleri yansıtacak şekilde 19 Şubat 2013’te düzenlenmiştir. Umarım tema ayar serisinden ilk iki gönderiyi okur ve tadını çıkarırsınız – WordPress tema ayarına giriş ve tema ayarı ile etkileşim. Şimdi ana yemeğe geçme ve temanızda kullanabileceğiniz Bolarplate ayarlama temalarını monte etmeye başlama zamanı. Bu yazı birkaç uzun kod bloğu içerir, bu nedenle sıraya dikkat edin. Not: Doğrudan Bolarplate kullanmayı tercih ederseniz, GitHub’dan indirebilir ve ‘Thsp_CBP_OPS_Array’ Keek Filtre Kancası’na bağlanarak $ Seçenekler dizisindeki alanı değiştirebilirsiniz.
Ne yarattık
Ayarlama.php – Bu, opsiyon satırından verileri kullanarak bölümler, ayarlar ve kontrol ekleyen ana temanın bir BolarPlate dosyası ayarlamasıdır.
Özel-controls.php özel kontrol sınıfı ve kendi özel kontrolünüzü eklemenizi sağlayan eylemler
Helpers.php – Tema seçenekleri, varsayılan seçenekler vb.
options.php – Seçenekleri düzenlemenizi ve kendi alanınızı kullanmanızı sağlayan örnek ve kanca filtresi seçeneği
Özel radyo kontrolleri için ayarlama-control.css-temel CSS
Tüm fikir, bu dosyaları temanızın dizinindeki alt dizinine kopyalayabilmektir, function.php’inizden Customer.php dosyasını ekleyin. (Bölüm 4’te açıklandı).GÜNCELLEME: Daha önce, sadece seçenekleri düzenlediniz.
Şimdi somut örnekler kullanalım – yeni tema ayarlama bölümüne metin kontrolü ekleyeceğiz. Diziler yardımcı fonksiyona yerleştirilir ve döndürüldüğünde bir filtrenin uygulanması. Bu şekilde çocuk temalarından veya eklentilerinden daha fazla seçenek ekleyebilirsiniz. İşte: /*** tema seçeneklerini tutan yardımcı işlev. * * @Return Array $ Seçenekler Tema Seçenekleri dizisi * @USES thsp_get_theme_customizer_fields () özelleştirici/ helpers.php */ işlev thsp_get_theme_customizer_fields (); $ options = array (// bölüm kimliği ‘new_customizer_section’ => Array ( / * * Bu mevcut bir bölüm * veya kaydedilmesi gereken yeni bir bölüm olup olmadığını kontrol ediyoruz * / ‘mevcut_seksiyon’ => false, / * * Bölüm İlgili Argümanlar * Kodeks – http://codex.wordpress.org/class_reference/wp_customize_manager/add_section */’args’ => Array (‘başlık’ => __ (‘yeni bölüm’, ‘açıklama’ => __ ( ‘Yeni bölüm açıklaması’, ‘my_theme_textdomain’), ‘öncelik’ => 10), / * * ‘Alanlar’ dizisi * / ‘alanlar’ => diziye eklenmesi gereken tüm alanları içerir ( / * * ========== * ========== * Metin Alanı * ========= * ===================== = * /// alan kimliği ‘new_text_field’ => Array (/ * * İlgili bağımsız değişkenler * codex – http://codex.wordpress.org/class_reference/wp_customize_manager/add_setting */’setgs’ varsayılan ‘=> __ (‘ ‘ Varsayılan metin değeri ‘,’ my_theme_textdomain ‘),’ type ‘=>
‘Seçenek’, ‘Yetenek’ => $ gerekli_capability, ‘nakliye’ => ‘yenileme’, ‘sendize_callback’ => ‘thsp_sanitize_cb’,/ * * Kontrolle ilgili argümanlar * codex – http://codex.wordpress.org /Class_reference/wp_customize_manager/add_control */’control_args’ => dizisi (‘etiket’ => __ (‘yeni metin kontrol etiketi’, ‘my_theme_textdomain’), ‘type’ => ‘metin’ ‘=> 1)))) ,);/ * * Thsp_customizer_opations ‘filtre kancası, bu seçeneklerin bazılarını bir alt temadan */return applate_filters (‘ thsp_customizer_oposeds ‘, $ options) eklemenize/kaldırmanıza olanak tanır;} Güncelleme: Dizi aynı kalır, ancak şimdi filtre kancasına seçenek dizisine devam edebilirsiniz, daha fazla ayrıntı için Bölüm 4’e bakın.
İlk bakışta karmaşık görünüyor, biliyorum, ama açıklayayım. Dizi $ seçenekleri bölüm (ler) ‘den oluşur (bu durumda yalnızca bir tane – new_customizer_section), her bölümün yeni bir parça olup olmadığını göstermek için bir argüman, alanı ve boolean değeri vardır (mevcut_seksiyon) veya sadece birkaç alan ekliyoruz Mevcut alanlar. Dizi bağımsız değişkenleri, $ wp_customize-> add_section yöntemine ne vereceğinizle aynıdır. Dizi düzlemi biraz daha karmaşıktır. Yenileme: Kontrol argümanında seçim seçimi artık çok boyutlu bir dizidir. Her alan özelleştirici ayarları ve özelleştirici kontrolünden oluşur. Bu yüzden setty_args ve control_args dizimiz var. Onlar neredeyse $ wp_customize yöntem-> add_setting ve $ wp_customize-> add_control için vereceğiniz argüman ile aynıdır. Tek fark, denetim bağımsız değişkenindeki ‘opsiyon’ dizisidir, $ wp_customize-> add_control, bunun anahtar çift dizisi olmasını gerektirir => basit bir değer ve bunun yerine çok boyutlu bir dizi kullanıyoruz.
Bu şekilde her seçeneğe daha fazla veri sürdürmek mümkündür, bu nedenle, örneğin, temanızdaki Google yazı tiplerini yüklerseniz, seçilen dizide doğru yazı tiplerini yüklemenizi sağlayan bir dizeye sahip olabilirsiniz. Özelleştirici Bolarplate kullanan bu temanın örneklerini görebilirsiniz. Yani, üç yöntemi zaten biliyorsanız, her şey çok tanıdık. Bir onay kutusu kontrolü ekleyerek neredeyse aynı, yalnızca ‘Control_args’ dizisindeki ‘Tür’ ‘onay kutusunu’ değiştirmeniz gerekir: / * * ==================== * Onay kutusu alanı * ==== ========== */ ‘new_checkbox_field’ => dizi (‘setting_args’ => dizi (‘varsayılan’ => true, ‘type’ => ‘seçeneği’ , ‘yeteneği’ => $ gerekli_capability, ‘nakliye’ => ‘yenileme’, ‘sendize_callback’ => ‘thsp_sanitize_cb’, ‘control_args’ => dizisi (‘label’ => __ (‘yeni radyo kontrol etiketi’,, ‘My_theme_textdomain’), ‘type’ => ‘onay kutusu’, // onay kutusu alanı denetim ‘öncelik’ => 2)), radyo ve kontrol seç, sadece verilen seçimi yapmanız gerekir:
/ * * =========== * ============================ * ===== ========== === */ ‘new_radio_field’ => Array (‘cennet_args’ => dizi (‘varsayılan’ => option-2 ‘,’ type ‘=>’ option ‘,’ özellik ‘=> $ Thsp_cbp_capability,’ aktarım ‘=>’ yenileme ‘,),’ control_args ‘=> dizi (‘ etiket ‘=> __ (‘ yeni radyo kontrol etiketi ‘,’ my_theme_textdomain ‘),’ type ‘=>’ radyo ‘, // radyo kontrolü’ seçenekleri ‘=> dizi (‘ option-1 ‘=> dizi (‘ etiket ‘=> __ (‘ seçenek 1 ‘,’ my_theme_textdomain ‘),’ option-2 ‘=> dizi (‘ Etiket ‘=> __ (‘ seçenek 2 ‘,’ my_theme_textdomain ‘),’ opsiyon-3 ‘=> dizi (‘ etiket ‘=> __ (‘ seçenek 3 ‘,’ my_theme_textdomain ‘))),’ öncelik ‘=> 3)), / * * == ========= * ============ * Alanı Seçin * =========== * =================== == */ ‘New_Select_Field’ => Array (‘setting_args’ => dizi (‘varsayılan’ => opsiyon-3 ‘,’ tür ‘ => ‘Seçenek’, ‘Yetenek’ => $ thsp_cbp_capable, ‘aktarım’ => ‘yenileme’,), ‘control_args’ => dizisi (‘etiket’ => __ (‘yeni seçme alan etiketi’, ‘my_theme_textdomain’) , ‘type’ => ‘seç’, // se ‘Seçenekler’ => dizi (‘option-1’ => dizi (‘etiket’ => __ (‘seçenek 1’, ‘my_theme_textdomain’)), ‘option-2’ => dizi (‘etiket’ => => => __ (‘seçenek 2’, ‘my_theme_textdomain’)), ‘opsiyon-3’ => dizi (‘etiket’ ‘
=> __ (‘Seçenek 3’, ‘my_theme_textdomain’))))), ‘öncelik’ => 4)) ve son olarak, WordPress’te iki tür karmaşık kontrol – Dosyaları yükleyin ve resim yükleyin:/ * === == ====== * =========== * Dosya Yükleme * ========== * ========== == */ ‘new_file_upload_field’ => dizi (‘cennet_args’ => dizi (‘varsayılan’ => ”, ‘type’ => ‘seçeneği’, ‘özellik’ => $ thsp_cbp_capability, ‘aktarım’ => ‘yenileyin ‘,),’ Control_args ‘=> dizi (‘ etiket ‘=> __ (‘ dosya yükleme ‘,’ my_theme_textdomain ‘),’ type ‘=>’ yükleme ‘, // dosya yükleme alan denetimini’ önceliği ‘=> 5) , / * * == ========== * ============== * Görüntü Yükleme * =========== * =================== == */ ‘new_image_upload_field’ => dizi (‘setting_args’ => dizi (‘varsayılan’ => ‘,’ type ‘=>’ ‘ Seçenek ‘,’ yeteneği ‘=> $ thsp_cbp_capable,’ aktarım ‘=>’ yenileme ‘,),’ control_args ‘=> dizi (‘ etiket ‘=> __ (‘ görüntü yükleme ‘,’ my_theme_textdomain ‘),’ type ‘= > ‘resim’, // görüntü alan denetimini yükleme ‘önceliği’ => 6)) ‘type’ => ‘option’ kullandığımı unutmayın D Doğa tüm bu alanlar için argümanlar oluşturur. Bu, tüm değerlerin veritabanınızda tek bir değer olarak saklanmasına izin verecektir. Alternatif ‘type’ => ‘tema_mod’ ama şimdilik ‘seçeneği’ kullanmaya devam edelim.
WordPress tema ayarlaması, aç ve kontrol ile nasıl etkileşime gireceğinizden emin değilseniz, bölümler, ayarlar ve ayarların kontrolünü eklemek için bir seçenek dizisi kullanmak, çünkü şimdi yapacağımız şey budur. Tek fark, parça, düzenlemeler ve kontroller eklemek yerine tek tek, yaptığımız seri dizisini kullanma işlemini otomatikleştireceğiz. Hemen girdik: thsp_cbp_customize_register işlevi ($ wp_customize) {/** * özel denetimler */requir (dirname (__ dosya__). ‘/Custom-crontrols.php’); / * * Tüm alanları bir yardımcı işlevi kullanarak alın */ $ thsp_sec öldürme = thsp_cbp_get_fields (); / * * Seçeneklerin saklanacağı db girişinin adını alın */ $ thsp_cbp_option = thsp_cbp_option (); / ** * Dizi boyunca döngü ve özelleştirici mezhepleri ekle */ foreach ($ thsp_sections $ thsp_section_key => $ thsp_section_value) {/ ** * Gerekirse özelleştirici bölümü ekler */ if (! {Thsp_section_args = $ thsp_setion_value Args ‘]; // $ wp_customize-> add_section ($ thsp_section_key, $ thsp_section_args) bölümü ekleyin; } // Her bölümdeki ‘Alanlar’ dizisinde / * * döngüsünü bitirin * / $ thsp_section_fields = $ thsp_section_value [‘fields’]; Foreach ($ thsp_section_fields olarak $ thsp_field_key => $ thsp_field_value) { / * * ‘Seçenek’ veya ‘tema_mod’un’ seçeneği ‘veya’ tema_mod’un kullanıldığını kontrol edin * * Hiçbir şey yoksa, $ wp_customize ise ‘seçenek’
ayar olarak kullanılır Değeri * {önek} _options tablosunda bir girişte saklanır. Seçenek adı thsp_cbp_option () işlevi */ if ($ thset_field_value [‘setting_args’] [‘type’]) && ‘option’ == $ thsp_field_value [” set $ Thsp_cbp_option. ‘[‘. $ Thsp_field_key. ‘]’; } else {$ setic_control_id = $ thsp_field_key; } / * * Varsayılan geri arama işlevi ekleyin, eğer hiçbiri tanımlanmıyorsa * / if (! İsset ($ thsp_field_value [‘setting_args’] [‘sendize_cb’])) {$ thsp_field_value [‘setty_args’] [‘sanitize_cb’] ‘; } / ** * Özelleştirici ayarları ekler * / $ wp_customize-> add_setting ($ setting_control_id, $ thsp_field_value [‘cennet_args’]); / ** * Özelleştirici kontrolü ekler * * ‘bölüm’ ‘Control_args’ dizisine * eklenmelidir, böylece kontrol geçerli bölüme eklenebilir */ $ thsp_field_value [‘control_args’] [‘bölümü’] = $ thsp_section_key; / * * $ wp_customize-> add_control yöntemi ‘seçenekler’ basit bir anahtar olmasını gerektirir => değer çifti */ if ($ thset_field_value [‘control_args’] [‘seçenekler’])))) {$ thsp_cbp_choices = arry (); Foreach ($ thsp_field_value [‘control_args’] [‘seçenekler’] $ thsp_cbp_choice_key => $ thsp_cbp_choice_value) {$ thsp_cbp_choices [$ thsp_cbp_choice_key]] } $ Thsp_field_value [‘control_args’] [‘seçenekler’] = $ thsp_cbp_choices; } // (‘color’ == $ thsp_field_value [‘control_args’] [‘type’]) {$ wp_customize->
add_control (yeni wp_customize_color_control ($ wp_customize, $ setting_control_id, $ thsp_field_value [‘control_args’]));} elseif (‘image’ == $ thsp_field_value [‘control_args’] [‘type’]) {$ wp_customize-> add_control ($ wp_customize, $ seter_control_id, $} elseif (‘upload’ == $ thsp_field_value [‘control_args’] [‘type’]) {$ wp_customize-> add_control ($ wp_customize_upload_control (} else {$ wp_customize-> add_control ($ seter_control_id, $ thsp_field_value [‘control_args’]);}} // End forEach} // forEach} add_ace (‘Customize_register’, ‘thsp_cbp_customize_register’);Tüm parçaları izlemek, eklemek mevcut değildir, ardından her bölümdeki tüm alanları izler, her biri için ayarlar ve kontrol ekleyin.Burada olan tek şey bu.
Tüm ayarlar için ‘tür’ => ‘seçeneği’ kullandığımızı hatırlıyor musunuz? Bu yüzden ayarlar ve bölümler için şimdi “my_theme_options [$ thsp_field_key]” var. Bu, tüm değerleri get_option (‘my_theme_options’) kullanarak alabileceğiniz bir seri dizi olarak saklayacaktır. Veya tüm alanlar için geçerli değeri ve varsayılan değeri almak için helpers.php’de tanımlanan bir yardımcı işlevi kullanabilirsiniz: /*** Seçenek değerlerini alın** Tüm seçenek değerlerini tutan dizi* seçeneğin varsayılan değeri Kullanıcı bir değer belirtmişse kullanılır * * @uses thsp_get_theme_customizer_defaults () içinde tanımlanmış/customizer/options.php * @return dizi tüm seçenekler için geçerli değer * @since tema_customizer_bilerplate 1.0 */function thsp_cbp_get_pations_defaults_cbp_get_defaults_defaults_cbp // Depolanan seçenekleri $ thsp_cbp_opations = wp_parse_args (get_option (thsp_cbp_option (), array ()), $ option_defaults) varsayılanlarıyla ayrıştırır; // Ayrıştırılmış diziyi döndür $ thsp_cbp_opations; } /** * Varsayılan seçeneği alın * * Tüm seçenekler için varsayılan değerleri tutan bir diziyi döndürür * * @uses thsp_get_theme_customizer_fields () içinde tanımlanmış $ 1.0 * /function thsp_cbp_get_opteds_defaults ()) {// Tüm tema seçeneği alanlarını tutan diziyi alın $ thsp_sections = thsp_cbp_get_fields (); // Tüm tema seçenekleri için varsayılan değerleri tutmak için diziyi başlatın $ thsp_option_defaults = array ();
// opsiyon parametreleri arasında döngü forEach ($ thsp_secations $ thsp_section) {$ thsp_section_fields = $ thsp_section [‘fields’]; Foreach ($ thsp_section_fields olarak $ thsp_field_key => $ thsp_field_value) {// paramereters dizisi için her seçenek için varsayılanlar dizisine bir Associates dizisi ekleyin ($ thsp_field_ption_deault [$ thsp_field] = $ thsp_option ayar $ thsp_option set $ thsp_fice ayarlar [$ thsp_field] ayar Setting_args ‘] [‘ varsayılan ‘]; } else {$ thsp_option_defaults [$ thsp_field_key] = false; }}} // varsayılan diziyi döndür $ thsp_option_defaults; } Bahsetmem gereken tek bir şey daha var – ‘Setting_args’ dizisinde belirttiğimiz sanitasyon geri çağrısının işlevi. İşlev Extend.php’de tanımlanır ve yalnızca wp_kses_post:/ ** * tema özelleştirici sanitizasyon geri arama işlevi */ işlevi thsp_saniticize_cb ($ input) {return wp_kses_post ($ input) işleviyle verileri çalıştırır; } Buradan nereden? Şimdilik, bu temayı temanızda ayarlayarak BolarPlate’i kullanabilirsiniz, tek yapmanız gereken GitHub’dan indirmek, temanızın dizini kopyalamak ve ana dosyayı% 100 işlevsel olan ve oldukça işlevsel olan Function.php’den eklemektir. Çoğu tema için iyi. Temanız “çoğu tema gibi” olmadığından, önümüzdeki hafta filtreler ve kancalar kullanarak kaynak plakalarını nasıl genişleteceğimizi göreceğiz. Bu kaynak plakasının nasıl artırılabileceğini veya genişletilebileceğini düşündüğünüzü duymaktan mutluluk duyacağım, bu yüzden lütfen bir yorum bırakın.