۴ حمزه بختیاری
طراحی بهتر ساید بار
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۱۹ دی ۱۴۰۱

چرا آقای صالحی دوتا ساید بار طراحی کرد با این این روش ممکنه کسی که با قالب کار میکنه سردرگم بشه به نظرم در طراحی ساید بار اشتباه کرد 

کد رجیستر ساید بار را به این شکل بنویسیم

register_sidebar([
        'name'           => 'ساید بار',
        'id'             => "sidebar_1",
        'description'    => 'توضیحات ساید بار',
        'class'          => '',
        'before_widget'  => '
', 'after_widget' => "
"
, 'before_title' => '

', 'after_title' => "

"
, 'before_sidebar' => '', 'after_sidebar' => '', // 'show_in_rest' => false, ]);

اینم بشه محتوای کل ساید بار

<div class="col-lg-4 col-md-12 col-sm-12 col-12">
     if(is_active_sidebar('sidebar_1')):?>
         dynamic_sidebar('sidebar_1')?>
     endif;?>
div>

برای ساخت هر ویجت هم به این شکل کار کنیم

function __construct() {
    // Instantiate the parent object.
    $widget_ops = array(
        'classname' => 'widget_category',
        'description' => 'ابزارک دسته بندی مطالب برای قالب معلم من',
    );
    parent::__construct( false, 'دسته بندی (معلم من)',$widget_ops );
}

خوشحال میشم نظرات بقیه رو بخونم

با تشکر

سلام یک قالب ممکنه چندین سایدبار داشه باشه و چون اسمش سایدبار هست نباید اینطور برداشت بشه که حتما در کنار قالب باشه در ضمن یک قالب می‌تونه دوتا سایدبار داشته باشه یکی سمت چپ یکی سمت راست محتوای اصلی به همین دلیل 2 سایدبار ایجاد شد که بدونید یک قالب حتما نباید یک سایدبار داشه باشه و دلیل دیگه اینکه نمایش ویجت‌ها وابسته به وجود سایدبار هست ممکنه کسی بخواد در فوتر سایت ویجتی رو نمایش بده به همین دلیل باید سایدباری طراحی بشه که در قسمت فوتر قرار بگیره تا ویجت مورد نظر مثل اطلاعات سایت درش قراربگیره در مستندات قالب باید نحوه استفاده و محل قرار گیری سایدبار توضیح داده بشه... در کل صرف اینکه اسمش سایدباره یا یورز ممکنه کیج بشه نباید نوع طراحی و پیاده سازی قالب محدود بشه

موفق باشید

وحید صالحی ۲۰ دی ۱۴۰۱، ۰۷:۴۶

کدهایی هم که قرار دادید ناقص هست شما در کد سوم از ساختار شی گرا استفاده کردید و از __construct استفاده کردید و درون اون __construct کلاس والد رو فراخونی کرید که ناقص هست ابتداه باید در قالب کلاسی مثلا با نام widget کد‌ها رو پیاده سازی کنید که از کلاس WP_widget ارث بری کنه و در ادامه متدی برای رجیستر شدن widget بنویسد و در پایان آبجتکی از کلاس ایجاد کرده بسازید تا ویجت کار کنه

وحید صالحی ۲۰ دی ۱۴۰۱، ۰۷:۵۲

فکر کنم بد منظورم رسوندم

منظور این بود که برای جدا کردن این بخش نیاز نیست حتما دوتا ساید بار داشته باشیم مثلا این قالب یه ساید بار راست و یه فوتر داره پس نیاز داریم چنتا سایدبار یکی با عنوان سایدبار راست و فوتر که خود فوتر دارای 5 بخش هست پس نیاز به اینه که ما 6 ساید بار رجیستر کنیم

کاری به این ندارم منضورم این هست که چرا دوتا سایدبار چپ فعال کنیم در صورتی که نیاز نیست


کد هایم که فرمودید ناقص هست من فقط  __construct رو نشون دادم که اشاره کنه چه شکلی کلاس و استایل رو به ویجت اضافه کنیم


در کل منظورم این هست که به این شکل کار بشه بهتره که این نظر من هست اگه مشکلی داره بگید من بخشی از کد هارو قرار میدم


روشی که نوشتم

بخش نمایش

class="col-lg-4 col-md-12 col-sm-12 col-12"> if(is_active_sidebar('sidebar_1')):?> dynamic_sidebar('sidebar_1')?> endif;?> div>


شرط رو در تگ زیر قرار دادم

<div class="col-lg-4 col-md-12 col-sm-12 col-12">

کد رجیستر

function register_widgets(){
    register_sidebar([
        'name'           => 'ساید بار',
        'id'             => "sidebar_1",
        'description'    => 'توضیحات ساید بار',
        'class'          => '',
        'before_widget'  => '
',
        'after_widget'   => "
",
        'before_title'   => '
',
        'after_title'    => "
",
        'before_sidebar' => '',
        'after_sidebar'  => '',
//        'show_in_rest'   => false,
    ]);
}
add_action('widgets_init','register_widgets');



2روشی که اقای صالحی گفتند

بخش نمایش

<div class="col-lg-4 col-md-12 col-sm-12 col-12">
    <div class="single_widgets widget_tags">
         if(is_active_sidebar('sidebar_1')):?> dynamic_sidebar('sidebar_1')?> endif;?>div>
  div>

بخش رجیستر

'name'           => 'ساید بار',
'id'             => "sidebar_1",
'description'    => 'توضیحات ساید بار',
'before_widget'  => '
',
'after_widget'   => "
",
'before_title'   => '
',
'after_title'    => "
",



تفاوت‌ها در نمایش هست به روشی که گفتم عمل کنیم ویجت هارو جدا و تکی نمایش میده بازم میگم کد

جهت تست و برسی فایل قالب در پیوست قرار دارد

با تشکر



حمزه بختیاری ۲۰ دی ۱۴۰۱، ۰۹:۲۱

دوست عزیز هدف توانایی ایجاد سایدبار‌های متعدد هست حالا اینکه چرا هر دو درسمت چپ هست صرفا مثال هست بعدا می‌تونید در جای دیگه استفاده کنید.

کدی هم اگر قرار می‌دید کامل قرار بدید چون باعث سردرگمی سایر دانشجوها میشه ممنونم.

وحید صالحی ۲۲ دی ۱۴۰۱، ۰۸:۰۲