it-swarm.asia

كيف تعمل كل من register_sidebar () و get_sidebar () معًا؟

إخلاء المسئولية: أنا جديد تمامًا على WP.

أنا أستخدم موضوع إطار عمل Starkers HTML5 . في functions.php ، أرى هذا الرمز:

function starkers_widgets_init() {

  // Area 1, located at the top of the sidebar.
  register_sidebar( array(
    'name' => __( 'Primary Widget Area', 'starkers' ),
    'id' => 'primary-widget-area',
    'description' => __( 'The primary widget area', 'starkers' ),
    'before_widget' => '<li>',
    'after_widget' => '</li>',
    'before_title' => '<h3>',
    'after_title' => '</h3>',
  ) );

  // Area 3, located in the footer. Empty by default.
  register_sidebar( array(
    'name' => __( 'First Footer Widget Area', 'starkers' ),
    'id' => 'first-footer-widget-area',
    'description' => __( 'The first footer widget area', 'starkers' ),
    'before_widget' => '<li>',
    'after_widget' => '</li>',
    'before_title' => '<h3>',
    'after_title' => '</h3>',
  ) );

  // ... more calls to register_sidebar() ... 
}

وفي footer.php أرى هذا الكود:

<?php get_sidebar( 'footer' ); ?>

لا أفهم كيف يعرف get_sidebar() كيفية التعامل مع وسيطة السلسلة هذه والعثور على الحاجيات المناسبة التي تم تعريفها بواسطة register_sidebar(). في مقتطف jobs.php الذي نشرته أعلاه. لا يوجد أي ذكر لـ "تذييل الصفحة" باستثناء الخصائص name و id و description. ولكن يبدو غريبا بالنسبة لي أن get_sidebar() ستبحث عن "تذييل" داخل تلك الخصائص.

هل هذا منطقي ما أطلبه؟ هل هناك قطعة مفقودة؟

الأسباب التي أطلبها هي - أود معرفة المزيد عن بنية WP - أود أن أكون قادرًا على تحديد مساحة عنصر واجهة مستخدم مخصصة ومعرفة كيفية عرضها على صفحة محددة.

شكرا للطن.

7
jessegavin

يمكنك فقط الاتصال get_sidebar() من index.php ويقوم بتحميل ملف السمة sidebar.php.

register_sidebar() ، من ناحية أخرى ، يتم استخدامها لعناصر واجهة المستخدم حيث تريد الإضافات وما شابه ذلك إضافة محتوى بشكل ديناميكي في ملف sidebar.php الخاص بك إذا كان الموضوع الخاص بك يدعمه.

في حالتك ، هل هناك ملف يسمى sidebar-footer.php في دليل المظهر الخاص بك؟

9
john010117

أنا لم أزعجك أبدًا من get_sidebar(). بدلاً من ذلك ، استخدم فقط dynamic_sidebar(). كنت أسميها مثل هذا:

dynamic_sidebar('first-footer-widget-area');

وهذا يعتني الشريط الجانبي بأكمله. لا مزيد من الادراج الملف ، لا مزيد من المجلدات موضوع تشوش. إذا كنت أرغب في امتلاك 5 أشرطة جانبية مختلفة ، فلن تضيف أي ملفات ، بل وظائف إضافية فقط في functions.php.

7
John P Bloch

get_sidebar('name') يحصل على قالب الشريط الجانبي للاسم sidebar-name.php.

داخل sidebar-name.php ، يوجد HTML للشريط الجانبي ، ومكالمة إلى dynamic_sidebar('some-name-hopefully-the-same') ، وهو المكان الذي ستذهب إليه عناصر واجهة المستخدم.

register_sidebar(array(name=>'some-name-hopefully-the-same', ...)) هو ما يسمح لـ dynamic_sidebar بالعمل.

كما ترى ، get_sidebar(templatename) للاستخدام مع قوالب الشريط الجانبي. إذا لم تكن بحاجة إليهم ، يمكنك فقط الاتصال بـ dynamic_sidebar(sidebarname) مباشرة من نسختك.

4
Gerard ONeill

get_sidebar('footer') يحاول تحميل sidebar-footer.php من السمة النشطة. يوفر Starkers هذا الملف. تحقق من starkers/sidebar-footer.php والأشياء يجب أن تصبح واضحة.

3
Annika Backstrom