لا أرغب في تصميم القطعة الافتراضية باستخدام CSS فقط. أرغب في عرض محتوى عنصر واجهة المستخدم "الفئات" الافتراضي مع بنية HTML الخاصة بي.
هل هناك أي مرشح أو ربط للقيام بذلك؟
للتوسع في إجابة Mark ، لا يتوفر الكثير (بشكل عام) في طريق المرشحات في عناصر واجهة تعامل WordPress الافتراضية (باستثناء ربما 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()
أعلاه.
ثم قم بإجراء التغييرات التي تريدها! أقترح تغيير العنوان أيضًا حتى تتمكن من تمييزه عن عنصر واجهة تعامل الفئات الافتراضي.
يمكنك تجاوز أدوات WordPress الافتراضية من خلال توسيعها. يمكن العثور على رمز أداة الفئات الافتراضية على الرابط التالي: https://developer.wordpress.org/reference/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 );