الاثنين، 31 مارس 2014

شرح تصميم قوالب ووردبريس -الجزء الحادي عشر-


شرح تصميم قوالب ووردبريس -الجزء الحادي عشر-
فى الدرس السابق، كنا قد انتهينا من الجزء الخاص بعرض التعليقات، وفى هذا الدرس سننهي ما يتعلق بنموذج كتابة تعليق جديد، وفي هذا الدرس سنعتمد على دالتين، الأولي وهي لتعيين قيم افتراضية لحقول النموذج، والثانية لتعديل شكل النموذج، لذا فلنبدأ !
سنكمل مع ملف functions.php ، حيث سنقوم بعمل filter جديد وذلك عبر دالة add_filter، وتلك الدالة تأخذ بارامتران، الأول وهي قيمة محددة وهي comment_form_defaults، والثاني ستكون اسم الدالة التي ستقوم أنت بإنشاءها بعد ذلك لتغيير شكل نموذج وضع تعليق جديد، مثلاً سنقوم بتسميته PHPGeekArForm،
add_filter('comment_form_defaults','PHPGeekArForm');
والآن سنقوم بإنشاء دالة بنفس الاسم الذي قمت بإدخاله فى البارامتر الثاني، وستأخذ الدالة Argument واحد عبارة عن مصفوفة وسنقوم بتسميته defaults
function PHPGeekArForm($defaults){

}
اول ما سنقوم بتغييره هي الجملة التى تفيد بأن البريد الإلكتروني الذي سيقوم المستخدم إدخاله فى النموذج لن يتم عرضه، تلك الجملة الشهيرة الموجودة أعلى نموذج كتابة تعليق جديد، فيمكنك تحديدها وتغييرها عبر الـKey المسمى بـcomment_notes_before، وانا شخصيًا سأقوم بحذفها، وذلك كالتالي:
function PHPGeekArForm(){
$defaults['comment_notes_before'] ="";

return $defaults;
}
تستطيع تغيير الجملة إذا أردت، لكن لا تنس أن تقوم بإرجاع المصفوفة defaults عبر return فى آخر الدالة، والآن لتغيير شكل النموذج يمكنك تحديد الـid الذي قمت بتخصيصه للنموذج، وادخاله فى مصفوفة defaults عبر الـkey الذي يدعى id_form، فمثلاً انا فى ملف الـCSS قمت بعمل id يدعى comment-form، وانا الآن اريد وضع ذلك الـId للنموذج، يمكنني ذلك عبر اضافة هذا السطر  فى الدالة:
$defaults['id_form'] = "comment-form";
قد تحتاج ايضًا إلى تغيير الـtextarea المخصص لكتابة محتوى التعليق، تستطيع ذلك عبر السطر التالي:
$defaults['comment_field'] ="

";
لاحظ اننا فى هذه الحالة قمنا بإدخال شيفرة HTML كاملة، ولم نقم بإدخال id معين للـTextarea، والآن انتهينا من الجزء الخاص بتغيير شكل وخواص النموذج، لننتقل الآن إلى طريقة معالجة النموذج، وفى تلك الخطوة سنقوم بإضافة filter جديد عبر add_filter، البارامتر الأول قيمته comment_form_default_fields، والثاني قيمته اسم الدالة التي ستقوم بإنشاءها لتلك العملية، انا سأقوم بتسميتها PHPGeekArFileds،
add_filter('comment_form_default_fields','PHPGeekArFileds');
والآن سنقوم بإنشاء الدالة،
function PHPGeekArFileds(){
}
ثم سنقوم بأخذ بعض البيانات، وأولها اسم صاحب التعليق، لذلك سنقوم بإنشاء متغير باسم commenter مثلاً ثم سنقوم بإسناد قيمة اسمه عن طريق دالة wp_get_current_commenter  كالتالي:
function PHPGeekArFileds(){
$commenter = wp_get_current_commenter();
}
ما نريده الآن ان نعرف ما هي الحقول الأساسية التي يجب على المستخدم إدخالها، فى ووردبريس هناك خاصية فى لوحة التحكم تتيح لمدير المدونة أن يوجب على المستخدم إدخال اسمه وبريده الإلكتروني بشكل أساسي أم لا، ولذلك سنأخذ هذا الإختيار من لوحة التحكم ، ونضعه فى متغير كالتالي:
$req = get_option('require_name_email');
والآن سنقوم بوضع قيمة لمتغير سنقوم بتسميته aria_req، وهو مخصص لكي يظهر للمستخدم الحقول الإجبارية التي يجب عليه إدخال قيم فيها، وذلك عبر هذا السطر:
$aria_req = ($req ? " aira-required='true'": ' ');
وقيمة هذا المتغير عبارة عن تحقق ما اذا كانت خاصية إجبار المستخدم على إدخال البريد الإلكتروني واسمه -فى متغير req- مفعلة أم لا، فإذا كانت مفعلة سيتم إدخال قيمة aria-required=true فى المتغير.
والآن سنقوم بإنشاء مصفوفة تحتوى على شيفرة HTML الخاصة بالحقول، كالتالي:
function PHPGeekArFileds(){
$commenter = wp_get_current_commenter();
$req = get_option('require_name_email');
$aria_req = ($req ? " aira-required='true'": ' ');
$fields = array(
'author' => '

'.$aria_req.'

',

'email' => '

'.$aria_req.'

',

'url' => '

'
);
return $fields;
}

أرجوا ان تكون الفكرة واضحة، ونلتقى فى الدرس القادم -بإذن الله-.

ليست هناك تعليقات:

إرسال تعليق