Tema Özelleştirici: Koşullar, Alt Temalar ve Eklentiler
- <span>1. WordPress Tema Özelleştiriciye Giriş
- <span>2. WordPress Tema Özelleştirici ile Etkileşim
- <span>3. WordPress Tema Özelleştirici Özeti
- <span>4. WordPress Tema Özelleştirici Özetini Genişletme
- 5. Şu Anda Okuduğunuz: Tema Özelleştirici: Koşullar, Alt Temalar ve Eklentiler
Şimdiye kadar Tema Özelleştirici Genel Plakasını ve kancalarını kullanarak tema seçeneklerini yönetmenin ne kadar basit olduğunu gördük. Muhtemelen hatırlayacağınız gibi, en önemli adım 'thsp_cbp_options_array' filtre kancasına bağlanmak ve ona temanızda kullanmak istediğiniz seçenek dizisini iletmekti.
Eminim WordPress eylemine ve filtre kancalarına (Eklenti API'si) ve bunların nasıl çalıştığına zaten aşinasınızdır, ancak her ihtimale karşı, işte kısa bir özet (örnek olarak filtre kancalarını kullanarak). Add_filter işlevini kullanarak özel işlevinizi tanımlayabilir ve onu mevcut bir filtreye bağlayabilirsiniz:
add_filter( $tag, $function_to_add, $priority, $accepted_args );
Öncelik argümanına odaklanalım. Varsayılan değeri 10'dur, yani başka bir sayı kullanmazsanız işlevinizin yürütme önceliği bu olacaktır. Sayıyı düşürün, işleviniz daha erken yürütülür. Yani eğer böyle bir şey yaparsanız:
// Adding first message
function my_theme_add_first_message( $content ) {
$content .= '<p>First Message</p>';
return $content;
}
add_filter( 'the_content', 'my_theme_add_first_message', 1 );
// Adding second message
function my_theme_add_second_message( $content ) {
$content .= '<p>Second Message</p>';
return $content;
}
add_filter( 'the_content', 'my_theme_add_second_message', 2 );
Single.php'de veya başka herhangi bir şablonda the_content işlevini çağırdığınızda gönderi içeriği gösterilecek, ardından İlk Mesaj ve ardından İkinci Mesaj gösterilecektir. Bu kod pasajındaki sıraları bu olduğundan değil, yürütme önceliği parametresinden dolayı. Kancaları, tepeden aşağı yuvarlanıp yollarına çıkan her türlü şeyi toplayan kartopları gibi düşünün.
Bu, Tema Özelleştirici Genel İçeriği için nasıl geçerlidir?
Öncelik değeri 1 olarak ayarlanmış özel bir işlev (ör. my_theme_options_array) kullanarak temanızın function.php dosyasından 'thsp_cbp_options_array''e bağlanabilirsiniz. Bu, 'thsp_cbp_options_array'e bağlanan diğer işlevler anlamına gelir ' filtre kancası bunu daha önce tanımladığınız my_theme_options_array işlevinden SONRA yapacaktır. Bu örneğe bir göz atın:
function my_theme_options_array() {
// Using helper function to get default required capability
$thsp_cbp_capability = thsp_cbp_capability();
$options = array(
// Section ID
'my_theme_new_section' => array(
'existing_section' => false,
'args' => array(
'title' => __( 'New Section', 'my_theme_textdomain' ),
'priority' => 10
),
'fields' => array(
/*
* Radio field
*/
'my_radio_button' => array(
'setting_args' => array(
'default' => 'option-2',
'type' => 'option',
'capability' => $thsp_cbp_capability,
'transport' => 'refresh',
),
'control_args' => array(
'label' => __( 'My Radio Button', 'my_theme_textdomain' ),
'type' => 'radio', // Radio control
'choices' => array(
'option-1' => array(
'label' => __( 'Option 1', 'my_theme_textdomain' )
),
'option-2' => array(
'label' => __( 'Option 2', 'my_theme_textdomain' )
),
'option-3' => array(
'label' => __( 'Option 3', 'my_theme_textdomain' )
)
),
'priority' => 3
)
)
)
)
);
return $options;
}
add_filter( 'thsp_cbp_options_array', 'my_theme_options_array', 1 );
Bu, Tema Özelleştiriciye Radyo Düğmem adı verilen bir alan içeren Yeni Bölüm ekleyecektir. Daha sonra siz veya bir başkası temanız için bir alt tema geliştirir ve Yeni Bölüm'ü korumaya karar verirsiniz, ancak Radyo Düğmem yerine Onay Kutum'a sahip olmak daha iyi olabilir. Kolay:
function my_child_theme_options_array( $options ) {
// Using helper function to get default required capability
$thsp_cbp_capability = thsp_cbp_capability();
/*
* This time, we're only editing fields in my_theme_new_section in the $options array
*/
$options['my_theme_new_section']['fields'] = array(
'my_checkbox_field' => array(
'setting_args' => array(
'default' => true,
'type' => 'option',
'capability' => $thsp_cbp_capability,
'transport' => 'refresh',
),
'control_args' => array(
'label' => __( 'My Checkbox', 'my_theme_textdomain' ),
'type' => 'checkbox', // Checkbox field control
'priority' => 2
)
)
);
return $options;
}
add_filter( 'thsp_cbp_options_array', 'my_child_theme_options_array', 2 );
$options parametresini my_theme_options_array'e aktarmadığımı ve bunu my_child_theme_options_array işlevinde yaptığımı fark ettiniz mi? Bunun nedeni, 'thsp_cbp_options_array' kancasına ilk bağlandığımda Tema Özelleştirici Genel Plaka örnek seçeneklerini geçersiz kılmak istememdi. Daha sonra alt temamdan tekrar bağlandığımda ana temanın seçeneklerini tamamen silmek istemedim, sadece biraz düzenleyin. Bu yüzden $options dizisinin tamamıyla değil, yalnızca $options['my_theme_new_section']['fields'] ile uğraşıyorum.
Elbette ana temanızdan 'thsp_cbp_options_array' filtre kancasına birden fazla kez bağlanabilirsiniz. Diyelim ki temanıza eklenti bölgesi özellikleri eklememeyi seçtiniz ve eklentilerin istediklerini yapmasına izin verdiniz. yapmam gerekiyordu. Artık bazı Tema Özelleştirici seçeneklerini yalnızca belirli bir eklenti etkinse göstermek istiyorsunuz. Yine kolay:
function my_plugin_dependency_options_array( $options ) {
// Using helper function to get default required capability
$thsp_cbp_capability = thsp_cbp_capability();
/*
* Only adding my_plugin_dependency_section if 'test-plugin.php' is active
*/
if ( is_plugin_active( 'test-plugin/test-plugin.php' ) ) {
$options['my_plugin_dependency_section'] = array(
'existing_section' => false,
'args' => array(
'title' => __( 'Plugin Dependency', 'my_theme_textdomain' ),
'priority' => 10
),
'fields' => array(
/*
* Text field
*/
// Field ID
'new_text_field' => array(
'setting_args' => array(
'default' => __( '', 'my_theme_textdomain' ),
'type' => 'option',
'capability' => $thsp_cbp_capability,
'transport' => 'refresh',
),
'control_args' => array(
'label' => __( 'Only shows if', 'my_theme_textdomain' ),
'type' => 'text', // Text field control
'priority' => 5
)
),
)
);
}
return $options;
}
add_filter( 'thsp_cbp_options_array', 'my_plugin_dependency_options_array', 3 );
Temanızla birlikte kullanılacak bir temel işlevsellik eklentisi mi geliştirmek istiyorsunuz (olması gerektiği gibi)? Bir temanın function.php dosyasından yaptığınız gibi, 'thsp_cbp_options_array''e eklenti dosyalarınızın birinden de bağlanabilirsiniz.
Seçeneği Çılgınlaştırmayın
Geliştirdiğiniz bir temaya her seçenek eklediğinizde, WordPress'in temel ilkelerinden birini (Seçenekler Değil Karar) aklınızda tutmanız gerekir. Temanızın sahip olduğu her küçük ayrıntı için kendinizi kaptırıp kullanıcı seçenekleri eklemeye başlamak kolaydır, ancak bunun kimseye bir yararı yoktur. Umarım bu birkaç püf noktası, özellikle de eklentiye bağlı seçeneklerin eklenmesi, temanızın seçeneklerinin sayısını mümkün olduğunca düşük tutmanıza yardımcı olur.
Sonuçta, temanızda her bir öğenin kenarlık yarıçapı gibi şeyler için seçenekler varsa, bu bir tema değil, bir WYSIWYG düzenleyicisidir ve muhtemelen harika bir düzenleyici değildir.
Beyaz gömleği biraz çaba harcayarak masa örtüsüne dönüştürebileceğiniz için almazsınız, “beyaz gömleği” hoşunuza gittiği için alırsınız. WordPress temaları da böyle olmalı, içeriği belli bir şekilde sunmalı, her şeyi akla gelebilecek her şekilde yapmaya çalışmamalı. Bir tema geliştiricisiyseniz, kullanıcı beklentilerinin olması gerektiği gibi olduğundan emin olmak sizin işinizdir.