আমি কেবল সিএসএস দিয়ে ডিফল্ট উইজেট স্টাইল করতে চাই না। আমি আমার নিজস্ব HTML কাঠামোর সাথে ডিফল্ট 'বিভাগ' উইজেট সামগ্রী প্রদর্শন করতে চাই।
এটি করার জন্য কোনও ফিল্টার বা হুক পাওয়া যায়?
আমি কেবল সিএসএস দিয়ে ডিফল্ট উইজেট স্টাইল করতে চাই না। আমি আমার নিজস্ব HTML কাঠামোর সাথে ডিফল্ট 'বিভাগ' উইজেট সামগ্রী প্রদর্শন করতে চাই।
এটি করার জন্য কোনও ফিল্টার বা হুক পাওয়া যায়?
উত্তর:
মার্কের উত্তরের প্রসারিত করার জন্য, ডিফল্ট ওয়ার্ডপ্রেস উইজেটগুলিতে ফিল্টারগুলির পক্ষে খুব বেশি (সাধারণত) উপলব্ধ নেই (সম্ভবত ব্যতীত widget_text
)।
তবে আপনার নিজস্ব কাস্টম উইজেট যুক্ত করা সহজ - এটি আপনার মধ্যে রাখুন functions.php
:
require_once("my_widget.php");
add_action("widgets_init", "my_custom_widgets_init");
function my_custom_widgets_init(){
register_widget("My_Custom_Widget_Class");
}
তারপর আপনি শুধু কপি বিদ্যমান বিভাগ থেকে উইজেট করতে চান wp-includes/widgets/class-wp-widget-categories.php
করতে my_widget.php
আপনার থিম, এবং কল ব্যবহৃত যে একই নামের বর্গ নাম পরিবর্তন register_widget()
উপরে।
তারপরে আপনার পছন্দমতো পরিবর্তন করুন! আমি শিরোনামটিও পরিবর্তন করার পরামর্শ দিচ্ছি যাতে আপনি এটি ডিফল্ট বিভাগের উইজেট থেকে আলাদা করতে পারেন।
আপনি ডিফল্ট ওয়ার্ডপ্রেস উইজেটগুলি প্রসারিত করে ওভাররাইড করতে পারেন। ডিফল্ট বিভাগের উইজেটের জন্য কোডটি নিম্নলিখিত লিঙ্কটিতে পাওয়া যাবে: https://developer.wordpress.org/references/classes/wp_widget_categories/widget/
এবং নীচে একটি উদাহরণ কোড রয়েছে যাতে আপনি কীভাবে উইজেটের আউটপুটকে ওভাররাইড করতে পারেন।
Class My_Categories_Widget extends 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' );
আপনার যা করতে হবে তা করতে আপনাকে একটি সম্পূর্ণ নতুন উইজেট তৈরি করার দরকার নেই। আমি আপনার প্রশ্নটি পড়তে পড়তে আপনি কেবল প্রান্তে কীভাবে বিভাগগুলি প্রদর্শিত হয় তা পরিবর্তন করতে আগ্রহী। দুটি ফাংশন যা সামনের প্রান্তে বিভাগগুলি প্রদর্শন করে
wp_list_categories()
যা তালিকায় বিভাগগুলি প্রদর্শন করে
wp_dropdown_categories()
যা ড্রপডাউন তালিকায় বিভাগগুলি প্রদর্শন করে
এটি সমস্ত ব্যাকএন্ডে কোন বিকল্পটি নির্বাচন করা হয়েছিল তার উপর নির্ভর করে
এখন, এই দুটি ফাংশনের প্রত্যেকটিতে একটি উইজেট নির্দিষ্ট ফিল্টার রয়েছে ( widget_categories_args
এবং widget_categories_dropdown_args
যথাক্রমে ) যা আপনি এই ফাংশনগুলিতে পাস করতে হবে সেগুলি আর্গুমেন্টগুলি পরিবর্তন করতে ব্যবহার করতে পারেন। আপনি তালিকা / ড্রপডাউন এর আচরণ পরিবর্তন করতে এটি ব্যবহার করতে পারেন। তবে এটি আপনি যা চান তা করতে যথেষ্ট নাও হতে পারে।
বিকল্পভাবে, এই ফাংশনগুলি কীভাবে তাদের আউটপুট প্রদর্শিত হবে তা পুরোপুরি পরিবর্তন করতে প্রতিটি ফাংশনের নিজস্ব ফিল্টার রয়েছে।
তারা যথাক্রমে হয়
আমরা widget_title
ফিল্টারটি নির্দিষ্টভাবে কেবলমাত্র উইজেটকে লক্ষ্য করতে এবং এই ফাংশনগুলির অন্যান্য উদাহরণগুলির জন্য ব্যবহার করতে পারি।
সংক্ষেপে, আপনি নিম্নলিখিত চেষ্টা করতে পারেন: (সম্পূর্ণ অবিরত )
add_filter( 'widget_title', function( $title, $instance, $id_base )
{
// Target the categories base
if( '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 );