Penyesuai Tema: Bersyarat, Tema Kanak-kanak dan Pemalam
- <span>1. Pengenalan Kepada Penyesuai Tema WordPress
- <span>2. Berinteraksi Dengan Penyesuai Tema WordPress
- <span>3. Plat Dandang Penyesuai Tema WordPress
- <span>4. Memperluaskan Pelat Dandang Penyesuai Tema WordPress
- 5. Sedang Dibaca: Penyesuai Tema: Syarat, Tema Kanak-kanak dan Pemalam
Setakat ini kami telah melihat betapa mudahnya untuk mengendalikan pilihan tema menggunakan Theme Customizer Boilerplate dan cangkuknya. Seperti yang anda mungkin ingat, langkah paling penting ialah menyambung ke cangkuk penapis ‘thsp_cbp_options_array’ dan menghantarnya pelbagai pilihan yang anda mahu gunakan dalam tema anda.
Saya pasti anda sudah biasa dengan tindakan WordPress dan cangkuk penapis — API Plugin — dan cara ia berfungsi, tetapi untuk berjaga-jaga, berikut adalah ringkasan pantas (menggunakan cangkuk penapis sebagai contoh). Anda boleh menentukan fungsi tersuai anda dan menyambungkannya ke dalam penapis sedia ada menggunakan fungsi add_filter:
add_filter( $tag, $function_to_add, $priority, $accepted_args );
Mari fokus pada hujah keutamaan. Nilai lalainya ialah 10, jadi jika anda tidak menggunakan nombor lain, itulah keutamaan pelaksanaan fungsi anda. Kurangkan nombor, lebih awal fungsi anda dilaksanakan. Jadi jika anda melakukan sesuatu seperti ini:
// 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 );
Apabila anda memanggil fungsi the_content dalam single.php atau mana-mana kandungan catatan templat lain akan ditunjukkan, diikuti oleh Mesej Pertama, diikuti oleh Mesej Kedua. Bukan kerana itu pesanan mereka dalam coretan kod ini, tetapi kerana parameter keutamaan pelaksanaan. Fikirkan mata kail seolah-olah ia adalah bola salji yang bergolek menuruni bukit memetik semua jenis barang dalam perjalanan mereka.
Bagaimanakah ini terpakai pada Theme Customizer Boilerplate?
Anda boleh menyambung ke 'thsp_cbp_options_array' daripada fail function.php tema anda, menggunakan fungsi tersuai (cth. my_theme_options_array) dengan nilai keutamaan ditetapkan kepada 1. Ini bermakna mana-mana fungsi lain yang menghubungkan ke 'thsp_cbp_options_array ' cangkuk penapis akan melakukannya SELEPAS fungsi my_theme_options_array yang telah anda tentukan. Lihat contoh ini:
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 );
Ini akan menambah Bahagian Baharu pada Penyesuai Tema dengan satu medan di dalamnya, dipanggil Butang Radio Saya. Kemudian anda, atau orang lain membangunkan tema kanak-kanak untuk tema anda dan memutuskan untuk mengekalkan Bahagian Baharu, tetapi bukannya Butang Radio Saya mungkin lebih baik untuk mempunyai Kotak Semak Saya. mudah:
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 );
Terperasan bahawa saya tidak menghantar parameter $options kepada my_theme_options_array dan melakukannya dalam my_child_theme_options_array function? Itu kerana apabila saya mula-mula menyambung ke cangkuk ‘thsp_cbp_options_array’, saya ingin mengatasi pilihan sampel Pelat Dandang Penyesuai Tema. Kemudian, apabila saya menyambungkannya semula daripada tema anak saya, saya tidak mahu memadam sepenuhnya pilihan tema induk, cuma edit sedikit sahaja. Itulah sebabnya saya hanya bermain-main dengan $options[‘my_theme_new_section’][‘fields’], bukan keseluruhan tatasusunan $options.
Sudah tentu, anda juga boleh memasukkan cangkuk penapis 'thsp_cbp_options_array' daripada tema induk anda lebih daripada sekali.. Katakan anda memilih untuk tidak menambah ciri wilayah pemalam pada tema anda dan biarkan pemalam melakukan apa yang mereka lakukan' semula sepatutnya. Kini anda ingin menunjukkan beberapa pilihan Penyesuai Tema hanya jika pemalam tertentu aktif. Sekali lagi, mudah:
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 );
Ingin membangunkan pemalam fungsi teras untuk digunakan dengan tema anda (seperti yang anda sepatutnya)? Anda boleh menyambung ke ‘thsp_cbp_options_array’ daripada salah satu fail pemalam anda juga, dengan cara yang sama anda melakukannya daripada fail function.php tema.
Jangan Gila Pilihan
Setiap kali anda menambah pilihan pada tema yang anda bangunkan, anda perlu mengekalkan salah satu prinsip teras WordPress — Keputusan bukan Pilihan — dalam fikiran. Sangat mudah untuk terbawa-bawa dan mula menambah pilihan pengguna untuk setiap butiran kecil yang ada pada tema anda, tetapi itu tidak membantu sesiapa pun. Saya harap beberapa helah ini, terutamanya menambah pilihan bergantung pemalam, akan membantu memastikan pilihan tema anda dikira serendah mungkin.
Lagipun, jika tema anda mempunyai pilihan untuk perkara seperti setiap jejari sempadan setiap elemen, ia bukan tema, ia adalah editor WYSIWYG dan mungkin bukan tema yang hebat.
Anda tidak membeli baju putih kerana dengan sedikit usaha anda boleh mengubahnya menjadi alas meja, anda membelinya kerana anda menyukai "kemeja putih"nya. Tema WordPress juga harus seperti itu, mereka harus menyampaikan kandungan dengan cara tertentu, tidak cuba melakukan segala-galanya dalam setiap cara yang dapat dibayangkan. Jika anda seorang pembangun tema, tugas anda untuk memastikan jangkaan pengguna adalah seperti yang sepatutnya.