Arabic (العربية/عربي) translation by Diangr (you can also view the original English article)
وورد ويبدو أن في كل مكان في هذه الأيام، ولا عجب مع ذلك لسهولة الاستخدام وسهولة للتخصيص. في هذا البرنامج التعليمي، وسأكون تشريح بنية comments.php السمة الافتراضية وورد واعطائك قصاصات مختلفة من التعليمات البرمجية لجعل الخاص بك السلخ أسهل.
للرجوع، لقد شملت أيضا جدول المحتويات صغيرة.
- الخلفية بي إتش بي
- مدونة عامة
- عرض التعليقات
- The comment form
- بعض الحيل قليلاً
- الاستنتاج
1-الخلفية بي إتش بي
<?php if(!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) : ?> <?php endif; ?> <?php if(!empty($post->post_password)) : ?> <?php if($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) : ?> <?php endif; ?> <?php endif; ?> <?php if($comments) : ?> <?php foreach($comments as $comment) : ?> <?php if ($comment->comment_approved == '0') : ?> <?php endif; ?> <?php endforeach; ?> <?php else : ?> <?php endif; ?> <?php if(comments_open()) : ?> <?php if(get_option('comment_registration') && !$user_ID) : ?> <?php else : ?> <?php if($user_ID) : ?> <?php else : ?> <?php endif; ?> <?php endif; ?> <?php else : ?> <?php endif; ?>
هذا هو رمز بي إتش بي الخام الذي يجعل الدالة ملف comments.php الخاصة بك. للمبتدئين، وهذا قد ننظر تخويف. ومع ذلك، لا تقلق: كل شيء في ملف التعليقات الخاصة بك مع هذا البرنامج التعليمي سوف تصبح واضحة وضوح الشمس!
2. رمز العامة
منع الوصول المباشر إلى comments.php
<?php if(!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) : ?> <?php endif; ?>
هذا السطر من التعليمة البرمجية يمنع المستخدمين من عرض comments.php عن طريق الصدفة. المقصود من هذه الصفحة المراد إدراجها في صفحة البريد، وليس بشكل منفصل. يمكن أن تفكر في هذا إجراء أمني. داخل العبارة، يمكن إدراج أي الرسالة التي تريد أن يتم عرضها على الشخص الذي عرض ملف comments.php، يفضل أن يكون ذلك ببيان يموت.
<?php if(!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) : ?> <?php die('You can not access this page directly!'); ?> <?php endif; ?>
كلمة مرور المطلوبة؟
<?php if(!empty($post->post_password)) : ?> <?php if($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) : ?> <?php endif; ?> <?php endif; ?>
هذا البيان (حسنا، 2 فعلا، لكن من المنطقي أكثر إذا عرض لهم كأحد) بالتحقق ما إذا كانت كلمة مرور مطلوبة لعرض الوظيفة. ومن الواضح، إذا لم يكن لديك كلمة مرور لعرض الوظيفة، أيضا غير مسموح لك عرض التعليقات.
أولاً إذا التحقق ما إذا كانت هناك مجموعة كلمة مرور. الثانية إذا كان بيان يتحقق ما إذا كان هناك ارتباط بكلمة مرور في مكان ويعرض الرسالة وفقا عندما لم يكن هناك. يمكنك تخصيص رسالة الإعلام بالخطأ بوضع كل ما اخترت داخل if الثانية البيان.
3-عرض التعليقات
<?php if($comments): ?> <?php foreach ($comments as $comment) : ?> <?php if ($comment->comment_approved == '0') : ?> <?php endif; ?> <?php endforeach; ?> <?php else : ?> <?php endif; ?>
هذه العبارة الشرطية الأولى (if($comments)) الشيكات إذا كانت هناك تعليقات والحلقات ثم من خلالهم مع بيان foreach. داخل العبارة foreach، ستلاحظ العبارة الشرطية التالية: إذا كان ($comment-> comment_approved = = '0'). وهذا يتحقق إذا كان التعليق قد تمت الموافقة، ويعرض رسالة إذا لم يتم الموافقة عليه.
مثال لهذا سيكون قطعة التالية من التعليمات البرمجية.
<?php if($comments) : ?> <ol> <?php foreach($comments as $comment) : ?> <li> <?php if($comment->comment_approved == '0') : ?> <p>Your comment is awaiting approval</p> <?php endif; ?> <p>Your comment</p> </li> <?php endforeach; ?> </ol> <?php else : ?> <p>No comments</p> <?php endif; ?>
التعليق الأساسية نموذج العلامات
لجعل هذا قطعة فنية من التعليمات البرمجية، سوف تحتاج إلى استخدام العلامات قالب وورد يوفر.
القالب الوسم | الوصف |
---|---|
<؟ comment_ID() بي؛؟ > | معرف التعليق |
<؟ comment_author() بي؛؟ > | كاتب التعليق |
<؟ comment_author_link() بي؛؟ > | كاتب التعليق، ملفوفة مع وصلة لموقعه على الإنترنت إذا كان تحديد واحد |
<؟ comment_type() بي؛؟ > | نوع التعليق؛ تنبيه أو تعقيب أو تعليق |
<؟ comment_text() بي؛؟ > | التعليق الفعلي |
<؟ comment_date() بي؛؟ > | التاريخ أنه تم ترحيل |
<؟ comment_time() بي؛؟ > | الوقت أنه تم نشر |
النتيجة النهائية
<?php if($comments) : ?> <ol> <?php foreach($comments as $comment) : ?> <li id="comment-<?php comment_ID(); ?>"> <?php if ($comment->comment_approved == '0') : ?> <p>Your comment is awaiting approval</p> <?php endif; ?> <?php comment_text(); ?> <cite><?php comment_type(); ?> by <?php comment_author_link(); ?> on <?php comment_date(); ?> at <?php comment_time(); ?></cite> </li> <?php endforeach; ?> </ol> <?php else : ?> <p>No comments yet</p> <?php endif; ?>
إدراج هذا في comments.php سوف تعطيك قائمة مرتبة بالتعليقات والمعلومات المطلوبة أو عرض رسالة تفيد أنه لم تكن هناك أي تعليقات.
4-نموذج التعليق
هل أنت لا تزال في أعقاب لي؟ جيد! نحن تقريبا هناك. نحن بحاجة فقط معالجة هذا النموذج التعليق... حسنا، ربما أنا كذبت بشأن تقريبا يجري هناك. شكل التعليق في الواقع واحدة من أصعب أجزاء الملف comments.php كامل الجلد.
كنت سوف يكون قصفت مع عدة عبارات شرطية (تسجيل دخول مطلوب، يتم تسجيل دخولك،...). هذا الجزء الدباغون الانطلاق الأكثر فيها أكثر من المشكلة: خطأ في النموذج عناصر يمكن أن يمنع النموذج من العمل على الإطلاق، من دون أن يعطي خطأ بي محدد.
لإعطائك نظرة ثاقبة في عبارات الشرطي الذي يتم المشاركة في شكل تعليق، سأكون أول شرح تلك البيانات، وتتضمن HTML في وقت لاحق شرح لماذا ينبغي أن يكون حيث.
نظرة عامة على العبارة الشرطية
<?php if(comments_open()) : ?> <?php if(get_option('comment_registration') && !$user_ID) : ?> <?php else : ?> <?php if($user_ID) : ?> <?php else : ?> <?php endif; ?> <?php endif; ?> <?php else : ?> <?php endif; ?>
هي العبارة الشرطية الأولى تصادف <؟ if(comments_open()) بي:؟ >. وهذا يتحقق أساسا إذا كانت التعليقات مفتوحة. ومن الواضح، إذا تم إغلاق التعليقات، لا يمكنك نشر تعليق وشكل تعليق غير مطلوب. يمكنك وضع الرسالة التي تريد أن يتم عرض إذا تم إغلاق التعليقات بين آخر <؟ بي آخر:؟ > و
<؟ endif بي؛؟ >.
العبارة الشرطية الثانية (<؟ if(get_option('comment_registration') بي آند آند! $user_ID):؟ >) بالتحقق ما إذا كانت تحتاج إلى أن تكون registred مرحلة ما بعد تعليق وإذا قمت بتسجيل الدخول. البرنامج النصي إذا هو الوفاء العبارة الشرطية، ينبغي عرض ارتباط إلى مكان حيث يمكن للمستخدمين تسجيل الدخول. إذا كان التسجيل غير مطلوب أو قمت مسبقاً بتسجيل الدخول، سوف يستمر مع جزء آخر البرنامج النصي وعرض النموذج.
بياننا الختامي الشرطي ثم يتحقق إذا قمت بتسجيل الدخول أم لا. من الواضح، إذا قمت مسبقاً بتسجيل الدخول أنها غير مجدية لجعل لكم ملء الاسم والبريد الإلكتروني وموقع على شبكة الإنترنت مرة أخرى.
إدراج شكل
تهانينا، نحن لقد مسرعة من خلال جميع البيانات الشرطية في ملف comments.php. الآن، كل ما تبقى إضافة الشكل هناك.
أول شيء يمكن أن أسمع رأيك: حيث الجحيم هذا النموذج سوف تبدأ؟ حسنا، لديك فقط لمتابعة الحس. العبارة الشرطية الثانية التحقق من ما إذا كان لديك لتسجيل الدخول أو لا، لذلك سيكون لديك لعرض لا نموذج حتى بعد هذا البيان. وهكذا يقع النموذج بأكمله داخل هذه العبارة الشرطية.
<?php if(comments_open()) : ?> <?php if(get_option('comment_registration') && !$user_ID) : ?> <p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.</p><?php else : ?> <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform"> <?php if($user_ID) : ?> <?php else : ?> <?php endif; ?> </form> <?php endif; ?> <?php else : ?> <p>The comments are closed.</p> <?php endif; ?>
لقد ألقيت أيضا في ارتباط بصفحة تسجيل الدخول، مثلما وجدت في comments.php الافتراضية. وكما قلت من قبل، يتحقق بيان شرطي آخر عما إذا كان دخولك أو لا. ومن الواضح أن يتم فقط عرض الحقول إدخال الاسم والبريد الإلكتروني وموقع على شبكة الإنترنت إذا كنت غير تسجيل. دعونا رمي لهم هناك!
<?php if(comments_open()) : ?> <?php if(get_option('comment_registration') && !$user_ID) : ?> <p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.</p><?php else : ?> <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform"> <?php if($user_ID) : ?> <p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">Log out »</a></p> <?php else : ?> <p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" /> <label for="author"><small>Name <?php if($req) echo "(required)"; ?></small></label></p> <p><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" /> <label for="email"><small>Mail (will not be published) <?php if($req) echo "(required)"; ?></small></label></p> <p><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" /> <label for="url"><small>Website</small></label></p> <?php endif; ?> </form> <?php endif; ?> <?php else : ?> <p>The comments are closed.</p> <?php endif; ?>
حسنا! نحن تقريبا هناك! نحن بحاجة فقط إضافة في بعض خطوط بسيطة من التعليمات البرمجية كجزء من النص وزر إرسال. هذه تذهب بعد آخر بيان الشرطية، حيث أنها غير ذات صلة لهذه العناصر إذا قمت بتسجيل الدخول أم لا.
<?php if(comments_open()) : ?> <?php if(get_option('comment_registration') && !$user_ID) : ?> <p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.</p><?php else : ?> <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform"> <?php if($user_ID) : ?> <p>Logged in as <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">Log out »</a></p> <?php else : ?> <p><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" /> <label for="author"><small>Name <?php if($req) echo "(required)"; ?></small></label></p> <p><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" /> <label for="email"><small>Mail (will not be published) <?php if($req) echo "(required)"; ?></small></label></p> <p><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" /> <label for="url"><small>Website</small></label></p> <?php endif; ?> <p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p> <p><input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" /> <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" /></p> <?php do_action('comment_form', $post->ID); ?> </form> <?php endif; ?> <?php else : ?> <p>The comments are closed.</p> <?php endif; ?>
يجب أن يكون هذا الرمز جداً لا تحتاج إلى شرح. حقل textarea للتعليق، وزر إرسال، حقل إدخال مخفية مع معرف التعليقات مستقبلا وقصاصة بي (<؟ do_action بي ('comment_form'، $post-> معرف)؛؟ >) وورد يتطلب جعل تعليق وظيفة النموذج.
فويلا! وهذا هو كل الناس! كنت قد حصلت الآن على ملف comments.php جاهزاً تماما. عرض هذا الملف للحصول على كافة التعليمات البرمجية PHP و HTML ما مطلوب. يجب أن ينتهي مع هذا (ببساطة استبدال الملف comments.php الجلد الافتراضي مع بلدنا وإضافة بعض التعديلات في التصميم لأنه.)



5-بعض الحيل قليلاً
وبطبيعة الحال، الآن فقط لديك ملف comments.php أساسية. هناك طن من الأشياء التي يمكن القيام بها لمواصلة تحسين ذلك. أنا قائمة بعض القليل من النصائح والحيل لمساعدتك على طريقك.
Gravatars
وحتى وورد 2.5، هناك علامة قالب وورد مخصصة لتضمين gravatars. فإنه يسحب غرفتر من الزائر إدخال عنوان البريد الإلكتروني. التعليمات البرمجية للقيام بذلك بسيط جداً.
<?php echo get_avatar($author_email, $size, $default_avatar ); ?>
يمكنك استبدال $author_email مع get_comment_author_email() أنيق؛ $size هو (العرض واﻻرتفاع) الرمزية الدالة، و $default_avatar رابط للصورة الرمزية الافتراضية (عرض عند المعلق قد لا gravatar).
إدراج هذه التعليمات البرمجية داخل الحلقة foreach يعرض التعليقات. الإخراج صورة بحجم الصورة الرمزية والصورة الرمزية--$ فئات (حيث $size هو الحجم قمت بتحديده). مع بعض التحرير المغلق بسيطة، يمكن أن ينتهي بك الأمر مع شيء من هذا القبيل:



أرقام التعليق
تركت عن قصد بها الرؤوس في ملف comments.php أنشأنا في وقت لاحق، حيث يعتقد أنها تقدم للتعليمات البرمجية الزائدة في عملية تعلم التي من الصعب ما فيه الكفاية كما. ومن الواضح، أن لا ننسى لهم على الرغم.
عادة، الناس لديهم عنوان عرض شيئا يشبه "3 تعليقات حتى الآن". هذا حقاً من السهل تحقيقه بفضل نموذج العلامات وورد عروض.
<?php comments_number($zero_comments, $one_comment, $more_comments); ?>
أنها جميلة لا تحتاج إلى شرح: $zero_comments هو النص الذي سيتم عرضه عندما يكون هناك لا تعليقات، $one_comment عندما يكون هناك تعليق واحد و $more_comments عندما يكون هناك العديد من التعليقات. وسيكون حياة حقيقية على سبيل مثال مثل هذا:
<?php comments_number('No comments', 'One comment', '% comments'); ?>
لقد استخدمت % للعديد من التعليقات، نظراً للدالة comments_number ثم يستبدل % بالعدد من التعليقات (2، 3،...)
المستخدمة في الملف comments.php، سوف ينتهي بك الأمر مع شيء من هذا القبيل:



روابط التعليق
لعرض ارتباط إلى جزء التعليقات (مع العدد من التعليقات وكذلك عرض)، يمكنك ببساطة استخدام التعليمات البرمجية التالية.
<?php comments_popup_link($zero_comments, $one_comment, $more_comments, $css_class, $comments_closed); ?>
المعلمات 3 أولاً في هذه الدالة هي نفس الدالة comments_number أعلاه. $css_class هو، ومن الواضح أن فئة css التي تعطي <a>العلامة و $comments_closed هو النص الذي يجب أن يتم عرض عندما يتم إغلاق التعليقات.</a> عند تطبيق هذا موضوع، وهذا طريقة ممكنة لاستخدامه.
<?php comments_popup_link('No comments', 'One comment', '% comments', 'comments-link', 'Comments are closed'); ?>
وهذا سيعطي ثم لك ارتباط مع فئة التعليقات-الارتباط
تحرير التعليقات
في بعض الأحيان سوف تحتاج إلى تحرير تعليق فورا. لحسن الحظ، باستخدام الدالة edit_comment_link، يمكنك بسهولة الانتقال إلى الصفحة اليمنى لتحريره، بدلاً من الاضطرار إلى استعرض للوصول إلى لوحة المشرف وأخيراً التوصل إلى هذا التعليق. الاستخدام على هذا النحو:
<?php edit_comment_link($link_text, $before_link, $after_link); ?>
لديك لوضع هذا داخل الحلقة foreach في التعليق. المعلمات واضحة تماما: $link_text هو مرساة النص لتحرير الارتباط، $before_link و $after_link على التوالي هي نص أو تعليمات برمجية لعرض قبل أو بعد الارتباط.
وهذا حقاً يجعل من السهل تغيير تعليق؛ ويمكن ببساطة إضافة ارتباط 'تحرير' صغيرة للمعلومات الوصفية التعليق الخاص بك (فقط للعرض من قبل المشرف). وهذا ما يمكن أن تبدو عليه:



ألوان متناوبة للتعليقات
فمن الممكن أن كنت تريد أن يكون صف الألوان على تعليقاتكم، جعل فصل أوضح بالتناوب. عند القيام بذلك، من السهل نسبيا. أولاً، أضف التعليمات البرمجية التالية إلى أعلى الصفحة:
function alternate_rows($i){
if($i % 2) {
echo ' class="alt"';
} else {
echo '';
} }
قم بإضافة ما يلي داخل الحلقة foreach (مرة أخرى). يمكنك ببساطة يمكن أن تحل محل<li id="comment-<?php comment_ID(); ?>">مع هذا:</li>
<?php $i++; ?> <li<?php alternate_rows($i); ?> id="comment-<?php comment_ID(); ?>">
هذا سيعطي كل تعليق الأخرى alt الفئة، مما يجعل من الممكن لتغيير مظهرها عن طريق CSS.
أنا قررت أن تجعل دالة لذلك، أن يكون أقل فوضى في ملف الموضوع الفعلي الخاص بك. يمكن إضافة تعريف الدالة في ملف functions.php الخاص بك إذا كنت ترغب، بل أنه من المنطقي، بالنسبة لي، أن يكون ذلك في الجزء العلوي من الصفحة الخاصة بك.
الصفوف البديلة جعله أسهل لتمييز التعليقات المختلفة؛ تنفذ مرة واحدة قد يكون لديك شيء من هذا القبيل:



عرض العلامات المسموح بها
لعرض التعليمات البرمجية الزائرين المسموح باستخدامها في تعليقاتهم، ببساطة استخدام هذا المقتطف قليلاً.
Allowed tags: <?php echo allowed_tags(); ?>
ثم ستحصل على قائمة بالعلامات التي يتم السماح ببساطة في التعليقات الخاصة بك، مثل هذا:
رابط آر إس إس تعليقات
للحصول على ارتباط آر إس إس للتعليقات لوظيفة معينة، ببساطة إدراج التعليمة البرمجية أدناه في ملف comments.php الخاصة بك في المكان الذي تريد أن تكون.
<?php comments_rss_link($link_text); ?>
ثم ببساطة استبدال $link_test مع تثبيت النص لربط RSS.
هذا يمكن أن تأتي في متناول اليدين إذا كنت تريد أن تعطي للزائرين الفرصة للاشتراك في التعليق لوظيفة محددة في المادة أو بلوق تغذية. يمكن تنفيذ ذلك مثل هذا:



6-الاستنتاج
ويحدوني الأمل كنت تتمتع هذه * مهم * المادة قليلاً عن السلخ ملف comments.php وورد الخاص بك. يمكنك الحصول على التعليمات البرمجية الكاملة هنا، مع الحيل وأظهر لي الواردة فيه:
- gravatars،
- ألوان الصف البديل،
- تحرير الارتباط،
- ربط التعليقات rss.
ومن الواضح أن الارتباط تعليقات لم يتم تضمين منذ هذا لاستخدامها داخل الحلقة.
أفضل حظ في الخاص بك وورد السلخ مغامرات!