Kemudian Anda hanya ingin menyalin widget kategori yang ada dari wp-includes/widgets/class-wp-widget-categories.phpke my_widget.phpdalam tema Anda, dan mengubah nama kelas menjadi nama yang sama seperti yang digunakan dalam panggilan ke register_widget()atas.
Kemudian buat perubahan apa pun yang Anda suka! Saya sarankan untuk mengubah judul juga sehingga Anda dapat membedakannya dari widget Kategori default.
dan di bawah ini adalah kode contoh bagaimana Anda dapat menimpa output widget.
ClassMy_Categories_Widgetextends WP_Widget_Categories {function widget( $args, $instance ){// your code here for overriding the output of the widget}}function my_categories_widget_register(){
unregister_widget('WP_Widget_Categories');
register_widget('My_Categories_Widget');}
add_action('widgets_init','my_categories_widget_register');
Dan alasan saya tidak menawarkan itu sebagai opsi adalah bahwa Anda mungkin menginginkan perilaku asli di beberapa titik, dan dengan solusi Anda, Anda hanya kehilangan kemampuan untuk mendapatkannya.
Anda tidak perlu membuat widget baru yang lengkap untuk melakukan apa yang perlu Anda lakukan. Ketika saya membaca pertanyaan Anda, Anda hanya tertarik untuk mengubah bagaimana kategori ditampilkan di ujung depan. Ada dua fungsi yang menampilkan kategori di ujung depan
Ini semua tergantung pada opsi apa yang dipilih di backend
Sekarang, masing-masing dari dua fungsi ini memiliki filter khusus widget ( widget_categories_argsdan widget_categories_dropdown_argsmasing - masing ) yang dapat Anda gunakan untuk mengubah argumen yang harus diteruskan ke fungsi-fungsi ini. Anda dapat menggunakan ini untuk mengubah perilaku daftar / tarik-turun. Namun, ini mungkin tidak cukup untuk melakukan apa yang Anda inginkan.
Atau, masing-masing fungsi memiliki filter sendiri untuk sepenuhnya mengubah cara bagaimana fungsi-fungsi ini harus menampilkan outputnya.
Kita dapat menggunakan widget_titlefilter untuk secara khusus menargetkan widget saja dan bukan contoh lain dari fungsi ini.
Singkatnya, Anda dapat mencoba yang berikut: ( TOTALLY UNTESTED )
add_filter('widget_title',function( $title, $instance, $id_base ){// Target the categories baseif('categories'=== $id_base )// Just make sure the base is correct, I'm not sure here
add_filter('wp_list_categories','wpse_229772_categories',11,2);//add_filter( 'wp_dropdown_cats', 'wpse_229772_categories', 11, 2 );return $title;},10,3);function wpse_229772_categories( $output, $args ){// Only run the filter once
remove_filter( current_filter(), __FUNCTION__ );// Get all the categories
$categories = get_categories( $args );
$output ='';// Just an example of custom html
$output .='<div class="some class">';foreach( $categories as $category ){// Just an example of custom html
$output .='<div class="'. echo $category->term_id .'">';// You can add any other info here, like a link to the category
$output .= $category->name;// etc ect, you get the drift
$output .='</div>';}
$output .='</div>';return $output;},11,2);
Jawaban:
Untuk memperluas jawaban Mark, tidak banyak (umumnya) tersedia filter filter pada widget WordPress default (kecuali mungkin
widget_text
).Tetapi menambahkan widget kustom Anda sendiri mudah - letakkan ini di
functions.php
:Kemudian Anda hanya ingin menyalin widget kategori yang ada dari
wp-includes/widgets/class-wp-widget-categories.php
kemy_widget.php
dalam tema Anda, dan mengubah nama kelas menjadi nama yang sama seperti yang digunakan dalam panggilan keregister_widget()
atas.Kemudian buat perubahan apa pun yang Anda suka! Saya sarankan untuk mengubah judul juga sehingga Anda dapat membedakannya dari widget Kategori default.
sumber
Anda dapat mengganti widget WordPress default dengan memperluasnya. Kode untuk widget Kategori default dapat ditemukan pada tautan berikut: https://developer.wordpress.org/reference/classes/wp_widget_categories/widget/
dan di bawah ini adalah kode contoh bagaimana Anda dapat menimpa output widget.
sumber
Anda tidak perlu membuat widget baru yang lengkap untuk melakukan apa yang perlu Anda lakukan. Ketika saya membaca pertanyaan Anda, Anda hanya tertarik untuk mengubah bagaimana kategori ditampilkan di ujung depan. Ada dua fungsi yang menampilkan kategori di ujung depan
wp_list_categories()
yang menampilkan kategori dalam daftarwp_dropdown_categories()
yang menampilkan kategori dalam daftar dropdownIni semua tergantung pada opsi apa yang dipilih di backend
Sekarang, masing-masing dari dua fungsi ini memiliki filter khusus widget (
widget_categories_args
danwidget_categories_dropdown_args
masing - masing ) yang dapat Anda gunakan untuk mengubah argumen yang harus diteruskan ke fungsi-fungsi ini. Anda dapat menggunakan ini untuk mengubah perilaku daftar / tarik-turun. Namun, ini mungkin tidak cukup untuk melakukan apa yang Anda inginkan.Atau, masing-masing fungsi memiliki filter sendiri untuk sepenuhnya mengubah cara bagaimana fungsi-fungsi ini harus menampilkan outputnya.
Mereka masing-masing
wp_list_categories
wp_dropdown_cats
Kita dapat menggunakan
widget_title
filter untuk secara khusus menargetkan widget saja dan bukan contoh lain dari fungsi ini.Singkatnya, Anda dapat mencoba yang berikut: ( TOTALLY UNTESTED )
sumber