Botvinya izoh qo'shish sharh javob. Sharh shaklini nozik sozlash. Daraxt sharhlarini qanday qilish kerak

WordPress sharhlaringizni shakllantirishga jiddiy kirishish vaqti keldi. Deyarli barcha mavzularda ular tizim fayllari tomonidan tuzilgan, bu esa o'z navbatida individual funktsiyalarni tahrirlashni cheklaydi. O'ylaymanki, ko'p odamlar sharhlarga o'zgartirish kiritishlari kerak bo'lganda, bunga duch kelishgan, ammo aniq qaerda ekanligini topa olishmagan. Shuning uchun, barcha funktsiyalarni joriy mavzuga o'tkazish yaxshiroq bo'lar edi, bu bizga to'liq nazorat erkinligini beradi.

Ushbu maqolada men sharhlaringizni yaxshilashga yordam beradigan ba'zi qiziqarli xususiyatlarni to'pladim. Shunga qaramay, ular sayt ma'muri bilan ham, foydalanuvchilar o'rtasida ham dialoglar o'tkazishga imkon beradi. Savollarga javob bering, turli muhokamalarni boshlang, umuman olganda, to'liq virtual aloqani joriy qiling. Shuning uchun ularga e'tibor berish va ularni to'g'ri shaklga keltirish kerak.

Mana biz nima qilamiz:

  • To'liq moslashtirish
  • Tashqi ko'rinish dizayni
  • Izohlarni raqamlash
  • Har bir foydalanuvchi uchun xabarlarni hisoblash
  • Har bir foydalanuvchiga status belgilang
  • Va boshqa kichik narsalar

Biz har bir nuqtani alohida tahlil qilamiz va maqolaning oxirida barcha funktsiyalar to'liq bitta tayyor kodga yig'iladi.

Izohlarni moslashtirish

WordPress-da sharhlar odatda comments.php faylida wp_list_comments funksiyasi orqali ko'rsatiladi. Va individual funktsiyalarni shakllantirish, shuningdek, tsiklning o'zi tizim fayl shablonidan comment-template.php ishlatiladi. Ammo kamdan-kam hollarda, sozlama WordPress mavzusida, functions.php yoki comments.php faylida joylashgan bo'lishi mumkin.

Shunday qilib, agar sizning mavzuingiz kamdan-kam hollarda bo'lmasa va siz o'zingizning sozlamalaringizni qilishingiz kerak bo'lsa, functions.php faylini oching va ?> belgisidan oldin quyidagi kodni qo'shing:

Agar (! function_exists("my_comment")) : function my_comments($comment, $args, $depth) ( global $commentnumber; $GLOBALS["comment"] = $comment; switch ($comment->comment_type): case " pingback" : case "trackback" : ?>

  • ", ""); ?>
  • id="li-sharh-">
    comment_parent) $avatar_size = 39; echo get_avatar($comment, $avatar_size); /* tarjimonlar: 1: sharh muallifi, 2: sana va vaqt */ printf(__("%1$s %2$s", "my_press"), sprintf(" %s", get_comment_author_link()), sprintf(" ", esc_url(get_comment_link($comment->comment_ID)), get_comment_time("c"), /* tarjimonlar: 1: sana, 2: vaqt */ sprintf(__("%1$s %2$s", " my_press"), get_comment_date(), get_comment_time()))); ?>
    comment_approved == "0") : ?>
    __("Javob berish", "my_press"), "chuqurlik" => $depth, "max_depth" => $args["max_depth"]))); ?>
    ", ""); ?>

    Keyin comments.php faylida chaqiruv funksiyasini qo'shing:

      "mening_sharhlarim")); $sharh raqami = 0; ?>

    Ushbu manipulyatsiyalardan so'ng sharhlaringiz joriy mavzuning functions.php faylidan shablon funksiyasidan foydalanib yaratiladi.

    Har bir foydalanuvchi uchun sharhlarni hisoblash

    Quyida keltirilgan funksiyadan foydalanib, sharhlovchining yonida qolgan xabarlarning umumiy sonini ko'rsatishimiz mumkin. Shunday qilib, siz foydalanuvchining qanchalik faolligini kuzatishingiz mumkin, bundan tashqari, statistika hech qachon ortiqcha bo'lmaydi, ayniqsa bu borada.

    Biz allaqachon tanish bo'lgan functions.php faylini ochamiz va oxiriga ?> belgisidan oldin quyidagi kodni qo'shamiz:

    //foydalanuvchi xabarlarini hisoblash funksiyasi bac_comment_count_per_user() ( global $wpdb; $comment_count = $wpdb->get_var("COUNT(sharh_ID) FROM ". $wpdb->sharhlar." WHERE comment_author_email = "" . get_comment_author_e."e " AND comment_approved = "1" VA comment_type NO IN ("pingback", "trackback")"); if ($comment_count == 1) ( echo " 1 Message"; ) else ( echo " " . $comment_count . " Xabarlar ";)))

    Endi qo'ng'iroq funksiyasini kerakli joyga qo'shish qoladi:

    Xabarlar roʻyxatdan oʻtganmi yoki yoʻqmi, foydalanuvchining elektron pochtasiga qarab hisoblanadi. Faqat sayt ma'muri tomonidan tasdiqlangan sharhlar hisobga olinadi, lekin kutish rejimida va o'chirilganlar hisobga olinmaydi.

    Izohlar soniga qarab har bir foydalanuvchiga status belgilaymiz

    Aynan shu holatda statistik ma'lumotlar muhim rol o'ynaydi. Funktsiya xabarlar soni asosida qurilganligi sababli, natijada olingan raqam foydalanuvchiga tegishli maqomni beradi. Bu, nazariy jihatdan, har bir forumda foydalanuvchining berilgan resursdagi vakolatini ko'rsatish uchun ishlatiladi.

    functions.php faylini qayta oching va ?> belgisidan oldin quyidagi kodni qo'shing:

    //foydalanuvchi holati funksiyasi get_author_class($comment_author_email,$user_id)( global $wpdb; $adminEmail = get_option("admin_email"); $author_count = count($wpdb->get_results("Izohning identifikatorini mualliflar sonidan $wpdbse dan tanlang> "; if($author_count>=1 && $author_count<50 && $comment_author_email !==$adminEmail) echo "Прохожий"; else if($author_count>=50 && $author_count<100 && $comment_author_email !==$adminEmail) echo "Новичок"; else if($author_count>=100 && $author_count<250 && $comment_author_email !==$adminEmail) echo "Знающий"; else if($author_count>=250 && $author_count<400 && $comment_author_email !==$adminEmail) echo "Опытный"; else if($author_count>=400 &&$mualliflar soni<800 && $comment_author_email !==$adminEmail) echo "Бывалый"; else if($author_count>=800 && $author_count<1200 && $comment_author_email !==$adminEmail) echo "СуперПупер"; else if($author_count>Professor"; )

    Va kerakli joyda biz chaqiruv funktsiyasini ko'rsatamiz:

    comment_author_email,$comment->user_id)?>

    Tushuntirish: bu funksiya, avvalgi kabi, foydalanuvchining elektron pochtasi bilan bog'langan. Faqat bu erda asosiy vazifa faqat xabarlarni sanash emas, balki belgilangan raqamga qarab dan vagacha bo'lgan raqamni hisoblashdir. Va foydalanuvchi unga etib borgach, u ma'lum bir pozitsiyani oladi. Hammasi bo'lib 7 ta status, shuningdek, ro'yxatdan o'tgan ishtirokchilar uchun admin va nishonlar mavjud.

    To'liq tayyor sharh kodi

    Mana, biz ushbu maqolaning oxiriga keldik. Bu erda men dangasa emas edim, barcha funktsiyalarni, shu jumladan sharhlarni o'rnatishni bitta tayyor kodga to'pladim. Men o'zimning uslublarimni qo'shdim va natija mini-forumga o'xshash narsa bo'ldi.

    functions.php faylini oching va oxirida ?> belgisidan oldin quyidagi kodni qo'shing:

    //foydalanuvchi xabarlarini hisoblash funksiyasi bac_comment_count_per_user() ( global $wpdb; $comment_count = $wpdb->get_var("COUNT(sharh_ID) FROM ". $wpdb->sharhlar." WHERE comment_author_email = "" . get_comment_author_e."e " AND comment_approved = "1" VA comment_type NO IN ("pingback", "trackback")"); if ($comment_count == 1) ( echo " 1 Message"; ) else ( echo " " . $comment_count . " Xabarlar "; ) ) //foydalanuvchi holati funksiyasi get_author_class($comment_author_email,$user_id)( global $wpdb; $adminEmail = get_option("admin_email"); $author_count = count($wpdb->get_results("Izohning identifikatorini $mualliflar soni sifatida tanlang F wpdb->comments WHERE comment_author_email = "$comment_author_email" ")); if($comment_author_email ==$adminEmail) echo "Admin"; if($user_id!=0 && $comment_author_email!=$adminEmailR) echo if" ($author_count>=1 && $author_count<50 && $comment_author_email !==$adminEmail) echo "Прохожий"; else if($author_count>=50 && $author_count<100 && $comment_author_email !==$adminEmail) echo "Новичок"; else if($author_count>=100 && $author_count<250 && $comment_author_email !==$adminEmail) echo "Знающий"; else if($author_count>=250 && $author_count<400 && $comment_author_email !==$adminEmail) echo "Опытный"; else if($author_count>=400 &&$mualliflar soni<800 && $comment_author_email !==$adminEmail) echo "Бывалый"; else if($author_count>=800 && $author_count<1200 && $comment_author_email !==$adminEmail) echo "СуперПупер"; else if($author_count>=1200 && $comment_author_email !==$adminEmail) aks-sado "Professor"; ) //izohlarni moslashtiring, agar (! function_exists("wordsmall_comment")) : function wordsmall_comment($comment, $args, $depth) ( global $commentnumber; $GLOBALS["comment"] = $comment; switch ($comment- > comment_type) : case "pingback" : case "trackback" : ?>

  • id="li-sharh-">
    %s", get_comment_author_link()); ?> comment_parent)($comment_parent_href = htmlspecialchars(get_comment_link($comment->comment_parent)); $comment_parent = get_comment($comment->comment_parent); ?> @Javob:comment_author;?>
    comment_parent) $avatar_size = 60; echo get_avatar($comment, $avatar_size); ?> comment_author_email,$comment->user_id)?>
    comment_approved == "0") : ?>
    ", ""); ?> __("Javob berish", "devorga bosish"), "chuqurlik" => $depth, "maks_depth" => $args["maks_depth"]))); ?>

    Endi comments.php faylini oching, unda sharhlarni chaqirish funksiyasini toping. Bu shunday ko'rinadi:

    Bunga o'zgartirish:

      "so'zlar kichik_sharh")); ?>

    Yakuniy qadam. style.css faylini oching va oxirida quyidagi uslublarni qo'shing:

    My_commentlist( border-top:none; ) .my_commentlist .comment( padding:0 0 15px 0; border:none; ) .my_commentlist .pingback( padding:0 0 15px 0; border:none; ) .my_commentlist .comment (comment .children) list-style-type: none; padding:0px; margin-left:0px;/*agar sizga daraxt shaklidagi qutilarga chekinish kerak boʻlsa, 15px*/ qoʻying) .my_commentlist .comment .children .comment( margin:15px 0 0 0 ; chegara: yo'q; to'ldirish: 0; ) #sharhlar (fon: #fff; ) #comments .my_commentlist (chegara: 10px 0; to'ldirish: 0; ro'yxat uslubi: yo'q; fon: #ebf0f3; to'ldirish: 5px; ) # sharhlar .my_commentlist .comment (margin:0; padding: 0 0 10px; fon: #fff; ) #comments .my_commentlist .mening_comment-muallif (displey: inline; hoshiya-o‘ng: 1px qattiq #e0e0e0; eni: 100px; float: chap; hoshiya: 0px 15px 10px 0; ) #comments .my_commentlist .commentmetatata ( float:left; ) #comments .my_commentlist p (aniq:none; color: #555; shrift: 14px arial; line-height: 23px; ) # sharhlar .my_commentlist .comment-content (chekka-chap: 116px; to'ldirish-o'ng: 10px; ) #comments .my_commentlist .reply ( text-align:right; ) #comments .my_commentlist .reply a( fon: #f5f5f5; hoshiya: 1px qattiq rgba(0, 0, 0, 0.06); chegara radiusi: 2px; rang : #515456; displey: inline-block; shrift o'lchami: 13px; shriftning og'irligi: normal; satr balandligi: 30px; chet-o'ng: 15px; minimal balandlik: 30px; to'ldirish: 0 12px; matnni tekislash: markaz ; text-decoration: none; ) .my_commentlist .avatar(chegara: oʻrtacha yoʻq; chegara radiusi: 50%; float: yoʻq; hoshiya: 5px auto; toʻldirish: 0px; displey: jadval; ) .my_commentlist .comment-header( balandlik: 30px; fon: #DEE5EB; pastki cheti: 15px; ) .mening_sharhlar roʻyxatim cite.fn(rang: #444; shrift: qalin 13px/30px arial; toʻldirish-chap: 10px; ) .mening sharhlar roʻyxatim .com_date (rang: #: 8ca0b5; shrift: normal 13px/30px arial; float: oʻng; toʻldirish-oʻng: 15px; ) .my_commentlist .commentnumber (rang: #8ca0b5; float: oʻng; shrift: kursiv 13px/30px arial; toʻldirish-oʻng: 15px;) .my_commentlist .comment-body ( toshib ketish: yashirin; pozitsiya: nisbatan; fon: #fff; ) .my_commentlist .rep-authorcom ( rang: #25394e; shrift o‘lchami: 13px; chiziq balandligi: 30px; ) .mening_sharhlar ro‘yxati .edit-link a ( fon: yo‘q !muhim; chegara: yo‘q !muhim; chegara radiusi: 0 !muhim; rang: #999!muhim; displey: inline-blok; shrift o‘lchami: 11px !important; shrift og‘irligi: normal; satr balandligi: 30px; chet-o‘ng: 5px !muhim; min-balandlik: 30px ; to‘ldirish: 0 !muhim; matnni tekislash: markaz; matnni bezash: yo‘q; ) .com_per (chegara: o‘rta yo‘q; rang: #666; displey: blok; shrift o‘lchami: 11px; matnni tekislash: markaz; ) .vip1,.vip, .vp, .vip2, .vip3, .vip4, .vip5, .vip6, .vip7 (chegara: oʻrtacha yoʻq; shrift: qalin 13px arial; displey: blok; matnni tekislash: markaz; chekka- pastki: 5px; matn bezatish: yoʻq; ) .vp (rang: #e82e24;).vip1 (rang: #348be8;).vip2 (rang: #BE005E;).vip3 (rang: #2e517e;).vip4 ( rang: #658a18;).vip5 (rang: #00A56D;).vip6 (rang: #e35d28;).vip7 (rang: #99A400;).vip (rang: #4c5176; shrift o'lchami: 11px; chekka: 0 ;)

    Kod to'liq ishlaydi va xatolarga olib kelmaydi, ammo CSS uslublariga kichik o'zgartirishlar kiritish kerak bo'lishi mumkin.

    Bu nom ko'pchilikni bezovta qilmaydi, lekin ba'zida sharh yoki shunga o'xshash narsalarni qoldirish uchun sharh qo'shishni qanday o'zgartirish kerakligi haqida savol tug'iladi. Bunday holda, ushbu maqola sizga yordam beradi. Yuqorida yozganimdek, men sizga bir nechta yo'llarni ko'rsataman.

    №1 usul

    Birinchi usul uchun faylni veb-saytingizda o'rnatilgan mavzu bilan papkadan topishingiz kerak comments.php. Agar mavjud bo'lsa, uni oching va undagi sharh shaklini o'rnatish va mazmunini ko'rsatish uchun mas'ul bo'lgan qatorni qidiring. Bu shunday ko'rinadi:

    $args = massiv("comment_notes_before" => "

    ", "comment_field" => "

    ", "id_submit" => "comm_subm", "label_submit" =>

    Shunday qilib, ushbu massivga kerakli qiymatga ega yangi parametr qo'shishingiz kerak va bu ham. Bizning holatlarimizda bu:

    "title_reply" => "Sharhingizni qoldiring",

    Siz tushunganingizdek - Sharhingizni qoldiring, bu o'rniga yangi nom - Izoh qo'shing. Bunday parametrni massivning oxiriga yoki boshiga qo'shishingiz mumkin. Bu shunday bo'ladi:

    $args = array("title_reply" => "Sharhingizni qoldiring", "comment_notes_before" => "

    Quyidagi maydonlarni to'ldiring. Sizning elektron pochtangiz nashr etilmaydi. Majburiy maydonlar belgilangan *

    ", "comment_field" => "

    ", "id_submit" => "comm_subm", "label_submit" => "Yuborish",); comment_form($args);

    Boshiga qo'shildi va endi, post sahifalarida qator ko'rsatiladi - sharhingizni qoldiring. Bu usul murakkab emas va minimal kuch talab qiladi, asosiysi massivni to'g'ri aniqlashdir. Lekin ba'zan shunday bo'ladiki, mavzu ichida comments.php fayli yo'q yoki unda massiv yo'q va siz uni qanday qilib to'g'ri qo'shishni bilmaysiz, keyin ikkinchi usul sizga yordam beradi.

    № 2 usul

    Ikkinchi usulning mohiyati yangi funktsiyani qo'shishdan iborat bo'lib, u nomni almashtiradi. Buning uchun faol mavzuga ega papkada faylni topishingiz kerak function.php maxsus funktsiyalar bilan va qulay joyda, agar siz buni bilmasangiz, PHP yorlig'i yopilishidan oldin - ?> , agar bunday narsa bo'lmasa, eng oxirida quyidagi kodni qo'shing:

    Funktsiya wph_change_submit_label($defaults) ( $defaults["title_reply"] = "Ko'rib chiqishingizni qoldiring"; return $defaults; ) add_filter("comment_form_defaults", "wph_change_submit_label");

    Bonus

    Bu birinchi usulda bajarilgan narsa bilan bir xil, oddiygina, biz uni to'g'ridan-to'g'ri massivga va bu erda filtr orqali amalga oshirdik. Ushbu qadamlardan so'ng siz nom o'zgarishini ko'rasiz. Birinchi usulda bo'lgani kabi, siz matnni o'zgartirishingiz mumkin - sharhingizni o'zingiz yoqtirganiga qoldiring. Ushbu matn misol sifatida keltirilgan.

    Shuningdek, Izohlar so'zining tuslanishini taklif qilmoqchiman va e'tiborni qaratmoqchiman. Agar formangiz qatorni ko'rsatsa - 1 ta sharh nashr etilgan yoki Sharhlar: 10. Funktsiyadan maqoladan foydalanishingiz mumkin. Agar siz allaqachon foydalanayotgan bo'lsangiz, qator bilan bir qatorda tavsiya qilaman:

    Massiv ("sharh", "sharh", "sharhlar")

    Agar siz ushbu so'zni yuqoridagi usullarda ishlatgan bo'lsangiz, ko'rib chiqish, ko'rib chiqish, sharhlash uchun nomlarni o'zgartiring. Shunday qilib, sizda hamma narsa bir xil bo'ladi va tarqoq emas, sharhlar va sharhlar mavjud.

    Bu men bugun sizga taqdim qilmoqchi bo'lgan ma'lumot. Ehtimol, bu kimgadir foydali bo'ladi.

    Hammasi shu, e'tiboringiz uchun rahmat. 🙂

    Yaqinda men WordPress mavzusimning fayllarini, ya'ni sharhlarni ko'rsatish shablonini qoidalarini o'rganib chiqdim, bir vaqtning o'zida uning tuzilishini va blog postlarida sharhlarni ko'rsatish uchun mas'ul bo'lgan turli funktsiyalarni tushundim. Natijada men standart chiqishni o'zgartirdim, o'zimning comments.php faylimni yaratdim va qo'shdim. Olingan natijani maqola shaklida taqdim etishga qaror qildim, chunki men bu mavzuni yaxshi tushundim va juda ko'p materiallar bor edi.

    Umid qilamanki, maqola HTML, CSS va PHP bilan tanish bo'lgan WordPress blog egalari uchun foydali bo'ladi.

    ***

    WordPress-da sharh shablonini post yoki sahifaga ulash uchun ikkita parametrni qabul qiluvchi comments_template() funksiyasidan foydalaning:

    • birinchisi shablon fayliga yo'l, sukut bo'yicha u joriy mavzuga ega papkada comments.php hisoblanadi.
    • ikkinchisi sharhlarni turi bo'yicha ajratish uchun ishlatiladi (odatiy, trekbeklar va pingbeklar), sukut bo'yicha noto'g'ri

    Single.php yoki page.php sahifasida yozuv ko'rsatilgandan keyin comments_template() ni kiritamiz.

    Maqolada keltirilgan comments_template() funksiyasi va boshqalarning tavsifi va qabul qilingan argumentlari uchun WordPress kodeksiga qarang.

    Shablonni tayyorlash

    Keling, WP sharh shablonlarini tushunishga harakat qilaylik va blog postlari va sahifalarida sharhlarni ko'rsatish uchun o'z faylimizni yarataylik. Malumot uchun misol sifatida siz standart WordPress mavzularidan shablonlarni olishingiz mumkin. Keling, istalgan matn muharririda yangi hujjat yaratamiz, uni comments.php deb nomlaymiz va tahrirlashni boshlaymiz.

    • Aslida, siz faylga o'zingiz yoqtirgan narsani nomlashingiz mumkin, so'ngra ushbu faylga yo'lni comments_template() da yozishingiz mumkin, ammo standart nomga yopishganingiz ma'qul.
    • Aytgancha, faylni WP boshqaruv panelida ham tahrirlashingiz mumkin.
    • Albatta, kod yozish va uning ta'sirini darhol blogingizda yoki mahalliy serverda sinab ko'rish yaxshidir.

    WordPress-da alohida postlar uchun sharhlarni o'chirib qo'yish mumkin, shuning uchun ularni ko'rsatishdan oldin siz "ochiqlik" ni tekshirishingiz kerak:

    Bu bizning keyingi harakatlarimiz uchun o'rash kodi. Endi izoh bloki uchun konteyner tayyorlaylik

    semantik jihatdan to'g'ri sinf yoki identifikator bilan (sinf, albatta, afzalroq):

    Ichkarida

    keling, sarlavha yozaylik, shunda o'quvchilaringiz bu erda sharhlar borligini va boshqa hech narsa emasligini tushunishlari uchun teg

    Buning uchun bu to'g'ri bo'ladi:

    "

    Bu erda biz WordPress funktsiyalaridan birini ko'rsatdik - the_title(), bu funktsiyani bajarish natijasi joriy post yoki sahifaning sarlavhasi bo'ladi. Sarlavhani ko'rsatishni xohlamasangiz, shunchaki "O'quvchi sharhlari" ni yozishingiz mumkin.

    Keyinchalik, sharhlarni ko'rsatishdan oldin, ularning mavjudligiga ishonch hosil qilishingiz kerak, ya'ni. tekshiring, agar mavjud bo'lsa, to'liq ro'yxatni ko'rsating, agar bo'lmasa, foydalanuvchiga "" kabi biror narsani ko'rsatishingiz mumkin. Shunday qilib, sizning postingiz/sahifangizga tashrif buyuruvchiga hali hech kim hech narsa yozmaganligi ayon bo'ladi va "Siz birinchi bo'lishingiz mumkin" degan motivatsion ibora ular sizga tezroq nimadir yozish ehtimolini oshiradi.

    Shunday qilib, muammoni bu shakllantirgandan so'ng, amalga oshirish uchun bizga if/else konstruktsiyalari va get_comments_number() sharhlar sonini ko'rsatish funksiyasi kerak bo'lishi aniq bo'ladi. Agar funktsiya 0 (nol) ni qaytarsa, biz "Hali izohlar yo'q ...", aks holda "O'quvchi sharhlari ..." ni ko'rsatamiz:

    Hozircha sharhlar yo'q, lekin siz birinchi bo'lishingiz mumkin

    O'quvchilarning maqolaga sharhlari ""

    Ushbu sahifa uchun muhokamalar yopiq

    Izohlarni chiqarish

    Ajoyib, biz sarlavhalarni sharhlar mavjudligi yoki yo'qligiga qarab ko'rsatdik, endi sharhlarning o'zini ko'rsatish mantiqan to'g'ri keladi - bu uchun wp_list_comments() funktsiyasi javobgardir. Standart funksiya barcha izohlarni teglarga o'rab oladi

  • , shuning uchun o'rash qo'shilishi kerak
      sinf topshirig'i.commentlist bilan:

      wp_list_comments() sharhlar ko'rinishini moslashuvchan sozlash uchun ishlatilishi mumkin bo'lgan bir qator argumentlarni oladi. Masalan, kalit so‘z va qiymatni kiritish orqali avatar o‘lchamini, sharhga javob matnini va boshqa sozlamalarni o‘zgartirishingiz mumkin:

      $args = array("avatar_size" => 64, // avatar hajmi 64*64px, standart 32 "reply_text" => "Javob berish" // "qayta qo'ng'iroq" izohiga javob matni => "mening_sharhlarim" // funksiya tashqi sharh turini yaratish uchun)

      Qayta qo'ng'iroq parametri alohida e'tiborga loyiqdir, u sharhni ko'rsatish uchun maxsus funksiya nomining qiymatini oladi. Uning yordami bilan siz har bir sharhning ko'rinishini moslashuvchan tarzda sozlashingiz mumkin. comment-template.php faylida standart chiqish funksiyasi shunday ko'rinadi:

    1. id="li-sharh-">
      "); ?> %s deydi:"), get_comment_author_link()) ?>
      comment_approved == "0") : ?>
      $depth, "max_depth" => $args["maks_depth"]))) ?>

      Eng oson yo'li - bu funktsiyani qabul qilish va uni o'zingiz uchun tahrirlash, so'ngra uni comments.php yoki functions.php fayliga yozib, uni maxsus funksiya sifatida chaqirishdir.

      Sharhlar ro'yxatini ko'rsatgandan so'ng, siz CSS uslublari yordamida ularning ko'rinishini o'zgartirishingiz mumkin. wp_list_comments() ning ba'zi parametrlari WP administratori, Variantlar → Muhokama yorlig'ida takrorlanadi, xususan, daraxt sharhlarining mavjudligi, sana bo'yicha saralash va hokazo.

      Sharh topshirish shakli

      Sharh formasini qo'shish uchun comment_form() funksiyasidan foydalaning. Keling, uni sharhlar ro'yxatiga qo'shamiz:

      Hozircha sharhlar yo'q, lekin siz birinchi bo'lishingiz mumkin

      O'quvchilarning maqolaga sharhlari ""

      1. 64, "reply_text" => "Javob berish", "qayta qo'ng'iroq" => "sharhlarim"); wp_list_comments($args); ?>

      Ushbu sahifa uchun muhokamalar yopiq

      Shu tarzda chaqirilganda comment_form() WordPress comment-template.php faylidan standart kodni yuklaydi. Funktsiya ikkita parametrni oladi:

      Comment_form ($args, $post_id);

      • $args — forma chiqish sozlamalari massivi
      • $post_id — funksiya qoʻllaniladigan postning identifikatori, sukut boʻyicha joriy post

      Misol uchun, HTML5 da shakl maydonlarini tasdiqlaymiz va matnli maslahatlar qo'shamiz. Kerakli sozlamalarni kiritish uchun $args massivini yaratamiz:

      $args = massiv(); izoh_formasi($args);

      Sozlamalar kalitlarini massivda ro'yxatdan o'tkazishingiz kerak:

      $args = massiv("maydonlar" => qo'llash_filtrlari("comment_form_default_fields", $fields));

      Endi biz forma maydonlarini o'z ichiga olgan $fields massiv o'zgaruvchisini to'ldirishimiz kerak. Eng oson yo'li - comment-template.php dan standart WordPress kodini olish va uni biroz o'zgartirish:

      "

      ". ($req ?" *" : "") . "

      ", "elektron pochta" => " ", "url" => "

      " . "

      "); $args = massiv("maydonlar" => qo'llash_filtrlari("comment_form_default_fields", $fields)); comment_form($args); ?>

      Bu erda muallif, elektron pochta va url parametrlarining qiymatlari mos ravishda "Ism", "Pochta" va "Sayt" maydonlarining html kodidir. Ushbu qiymatlarni tahrirlash kerak.

      Maydonlar uchun biz quyidagi atributlarni qo'shishimiz kerak:

      • zarur - maydonlarni majburiy qiladi, uni "Ism" va "Sayt" maydonlariga qo'shing
      • to'ldiruvchi - maydonga matnli maslahat qo'shadi
      • "Ism" maydoni uchun naqsh="(3,)" - nomini lotin yoki rus alifbosi harflarida va kamida 3 belgidan iborat bo'lgan holda ko'rsating.
      • "Pochta" maydoniga "email" yozing - bu HTML5 elektron pochta tekshiruvini qo'shadi
      • avtoto'ldirish - maydonlar uchun avtomatik to'ldirishni yoqadi
      • "Sayt" maydoniga "url" kiriting

      Yangi HTML5 atributlari eski brauzerlarda ishlamasligini unutmang. Yangi maydon turlarini tushunmaydigan brauzerlar ularni shunchaki matn sifatida ko'rsatadilar, ya'ni. .

      Bundan tashqari, o'z blogim uchun teglarni u erda va u erda almashtirdim, uslublar uchun sinflarni qo'shdim va natijada $fields massivi uchun quyidagi kodni oldim:

      "

      ", "elektron pochta" => " ", "url" => "

      "); ?>

      Biz ma'lumotlarni kiritish maydonlarini o'zgartirdik. Endi sharh shaklining o'zini tahrir qilaylik

      " ?>

      Bu standart WordPress kodi, men uni biroz o'zgartirdim - matnga maslahat qo'shdim va uslublar uchun qo'shimcha sinf yozdim.

      Men CSS uslubidan foydalanishni yakunladim:

      HTML5 atributlaridan foydalangan holda WordPress sharh formasi

      Pastki chiziq

      Nihoyat, men olingan comments.php kodini joylashtiraman:

      maqola o'quvchilari ""

      • Birinchi sharhni qoldiring - muallif harakat qildi
      1. id="li-sharh-">
        "); ?> %s yozadi:"), get_comment_author_link()) ?>
        comment_approved == "0") : ?>
        $depth, "max_depth" => $args["maks_depth"]))) ?>
        "Javob berish", "qayta qo'ng'iroq qilish" => "verstaka_comment"); wp_list_comments($args); ?>
      "

      ", "elektron pochta" => " ", "url" => "

      "); $args = array("comment_notes_after" => "", "comment_field" => "

      ", "label_submit" => "Yuborish", "maydonlar" => qo'llash_filtrlar("comment_form_default_fields", $fields)); comment_form($args); ?>

      Ushbu sahifa uchun muhokamalar yopiq

      Fikrlar haqida tez-tez so'raladigan savollar

      Muallif va foydalanuvchi sharhlarini qanday ajratib ko'rsatish mumkin?

      Ba'zan muallifning sharhlari uchun alohida ko'rinishni o'rnatish juda qulay, buning uchun hatto maxsus plaginlar ham mavjud. Biroq, siz plaginlarsiz qilishingiz mumkin - shunchaki CSS faylida .bypostauthor sinfi uchun uslublarni yozish orqali. Xuddi shunday, siz foydalanuvchi sharhlari uchun uslublarni o'rnatishingiz mumkin - .bypostuser:

      Daraxt sharhlarini qanday qilish kerak?

      Daraxt sharhlarini yoqish uchun siz WP administratoriga o'tishingiz kerak, Sozlamalar → Muhokama → Daraxt sharhlariga ruxsat berish. Endi bolalar sharhlari daraxt tuzilishiga ega bo'ladi, ularga individual uslublar, masalan, chekinishlar berilishi mumkin. Faqat class.children bilan ro'yxat uchun CSS qoidalarini o'rnatish kifoya:

      Sharhlar roʻyxati .children ( toʻldirish: 0 0 0 40px; /* bolalar izohlari uchun chap toʻldirish */ )

      Juft va toq sharhlar uchun uslublar

      WordPress sukut boʻyicha gʻalati izohlarga .juft va hatto sharhlarga .odd sinfini beradi. Ushbu darslar orqali o'z uslublaringizni o'rnatish oson:

      Sharhlar roʻyxati .juft ( /* toq sharhlar uchun uslublar */ ) .commentlist .odd ( /* juft fikrlar uchun uslublar */ )

      Alohida postdagi sharhlarni qanday yopish mumkin?

      Bu juda oson - post yozish uchun sahifaga o'ting, Ekran sozlamalari → Munozaralar, post maydoni ostida Munozaralar bloki paydo bo'ladi, Sharhlarga ruxsat berish bandini olib tashlang.

      • O'zingizning sharhlar shablonini yaratishda siz standart va boshqa pullik va bepul WordPress mavzularidan comments.php fayllaridan foydalanishingiz mumkin.
      • Standart sharhlarga muqobil uchinchi tomon sharh shakllari plaginlari, masalan, mashhur DISQUS
      • Kodni to'g'ridan-to'g'ri comment-template.php faylining o'zida tahrirlash juda mumkin, ammo agar WordPress yangilangan bo'lsa, barcha kod qayta yoziladi - siz yana tahrir qilishingiz kerak bo'ladi.
      • Esda tuting, mukammal sharh shablonlari mavjud emas.

      Loyihaga yordam bering

      65 ovoz, oʻrtacha: 4,46 5 dan)

      WordPress haqida biror narsa yozganimga ancha bo'ldi. Shuning uchun, bugun men siz bilan WordPress-da sharh shaklini qo'lda qanday o'zgartirishingiz mumkinligini siz bilan baham ko'raman. O'ylaymanki, bu bilim har qanday yangi boshlanuvchi blogger uchun foydali bo'lishi mumkin, chunki sharhlash shakli ba'zan tashrif buyuruvchilar va muallif o'rtasidagi yagona aloqa vositasidir. O'tib ketmang :)

      Kod bilan har qanday manipulyatsiyani boshlashdan oldin, men sizni oldindan ogohlantirmoqchiman, biz mavzu fayllarini emas, balki WordPress fayllarini tahrir qilamiz. Ha, bu kimgadir xavfli, boshqalarga ma'nosiz tuyulishi mumkin va boshqalarga shunchaki yoqmaydi :) Lekin men buni aynan shunday qildim va hech qanday muammoga duch kelmadim. Ishni boshlashdan oldin tahrirlayotgan faylning zaxira nusxasini yaratishni maslahat beraman.
      Men sizni xavfsizlik haqida ogohlantirdim, endi men erishgan natijani ko'rsatmoqchiman.


      Ko'rib turganimizdek, "Sizning elektron pochtangiz nashr etilmaydi" qatori olib tashlandi. Majburiy maydonlar *" bilan belgilanadi. Mehmonlarni miyasiz ahmoqlar deb hisoblashning hojati yo'q. Ular allaqachon nimani to'ldirish kerakligini va nima bo'lmasligini tushunishadi. Men dalalarning nomini dalalarning o‘ziga ham yashirib qo‘ydim. Bu qalin yozuvlar nima uchun? Ko'pchilik tashrif buyuruvchilar, hatto maydon nomlarisiz ham, qaysi biri nimaga tegishli ekanligini "ko'z bilan" aniqlashlari mumkin. Ammo ichki maslahatlar hali ham mavjud bo'lishi kerak. Xo'sh, sharh maydoniga sarlavha o'zining keraksiz jasoratini yo'qotdi. Menimcha, u ancha yaxshi va erkinroq bo'ldi.

      Shunday qilib, keling, hamma narsani tezda o'zgartiraylik! ;)
      Biz saytimiz papkasiga o'tamiz va unda wp-includes/comment-template.php faylini topamiz. Biz unda 1522-qatorni qidirmoqdamiz, ha, shunday. Qanday qilib men buni o'zim topdim - bu butun bir hikoya, men bu haqda biroz keyinroq aytib beraman :)
      Shunday qilib, tahrirlash uchun faylni oching va 1522-qatorga o'ting. Endi u va quyidagilar (1529 yilgacha) taxminan shunday:

      $fields = massiv("muallif" => "

      " . "". ($req ?" *" : "") . "

      ", "elektron pochta" => " ", "url" => "

      " . "

      ",);

      Hamma narsa qanchalik sodda va tushunarli. Barcha ortiqcha narsalarni kesib, ozgina qo'shish kifoya. Parametr qo'shiladi

      Placeholder="Yordam matni" !}

      Ushbu parametr maydonlar ichida istalgan matnni ko'rsatish imkonini beradi. Biz undan maslahatlarni ko'rsatish uchun foydalanamiz:

      "

      " "

      " "

      "

      Biz qatorlarni o'chirib tashlaymiz:

      "

      " . "". ($req ?" *" : "") "

      "

      Ular maydonlar ustidagi sarlavhalarni ko'rsatish uchun javobgardir.
      Bu barcha manipulyatsiyalar natijasida biz quyidagilarni olamiz:

      $fields = massiv("muallif" => "

      ", "elektron pochta" => "

      ", "url" => "

      ",);

      Faqat “Sizning elektron pochtangiz chop etilmaydi. Majburiy maydonlar *" bilan belgilanadi. Buning uchun qatorni o'chiring (taxminan 1537):

      "comment_notes_before" => "

      " . __("Sizning elektron pochta manzilingiz nashr etilmaydi.") . ($req ? $required_text: "") . "

      ",

      Hammasi bo'lganga o'xshaydi, endi bizning formamiz biroz jozibali bo'lib qoldi. Umid qilamanki, bu ma'lumot kimdir uchun foydalidir :)

      Obuna bo'ling, sharh qoldiring, men har qanday adekvat sharhni olishdan xursand bo'laman. Balki men o'zim biror narsani bilmayman va buni boshqacha qilish mumkin, o'z fikrlaringiz bilan o'rtoqlashing.

      Salom!

      Bugungi maqola bag'ishlangan WordPress sharh chiqishi. Qaysi fayllar va funksiyalarda sharhlarni ko'rsatish uchun mas'ul bo'lgan kod borligini ko'rib chiqamiz. Ushbu WordPress blog blokiga o'zgartirish kiritish uchun nima qilish kerak.

      Har bir WordPress shablonida (mavzusida) fayl borligidan boshlaylik comments.php Ildiz katalogidan unga to'liq yo'l: /wp-content/themes/template_folder/comments.php

      Aynan comments.php odatda ma'lum bir WordPress mavzusidagi sharhlar bloki uchun javobgardir.

      comments.php-da nima ko'p uchraydi:

      - sharhlarning parol bilan himoyalanishini tekshiring

      – maqolaga izoh qoldirishga ruxsat berilganligini tekshirish

      - sharhlarni tekshirish va tegishli matnni ko'rsatish ("Izohlar yo'q ..." yoki "N sharh qoldirilmagan")

      izoh chiqarish funktsiyasini chaqirish - wp_list_comments()

      – bir nechta sahifalarda sharhlar joylashda navigatsiya (paging) chiqishi

      - maqolaga sharh qoldirish shaklini ko'rsatish

      Bu erda siz o'z sinflaringizni belgilashingiz yoki xususiyatlarni o'zgartirishingiz mumkinligi aniq style.css allaqachon mavjud sinflar uchun. Shunday qilib, siz sharhlar va matnlarni qoldirish uchun shaklning ko'rinishini sharhlar ro'yxatidan oldin va ushbu ro'yxat yoki shakldan keyin o'zgartirishingiz mumkin. Lekin Sharhlarning chiqish uslublarini comments.php da o'zgartirib bo'lmaydi.

      Fayl mazmunini sanab o'tganimda comments.php, keyin u alohida ta'kidladi comments.php faqat sharhlarni ko'rsatish funksiyasiga qo'ng'iroq qilish mumkin wp_list_comments(), lekin xulosaning o'zi emas. Bular. V comments.php Siz topa olmaysiz (hech bo'lmaganda WordPress-ning so'nggi versiyalarida va shablonlarni ishlab chiqishga to'g'ri yondashuv bilan): xabar muallifining ismini va uning veb-saytiga havolani ko'rsatish, muallifning avatarini ko'rsatish, sana va vaqtni ko'rsatish. sharh, sharhning o'zi va "javob berish" havolasi.

      Sharhlar ro'yxatidagi uslublarni qanday o'zgartirish mumkin?

      Birinchidan, sizning shabloningiz sharhlarni ko'rsatish uchun maxsus funksiyadan foydalanishini aniqlashingiz kerak.

      Wp_list_comments() funksiyasi qayta qo'ng'iroq qilmasdan (qayta qo'ng'iroq - qayta qo'ng'iroq qilish funktsiyasi) va qayta qo'ng'iroq bilan chaqirilishi mumkin.

      1. Wp_list_comments ga qayta qo'ng'iroq qilmasdan qo'ng'iroq qiling:

      Bular. funktsiya parametrlarida (nomdan keyin qavs ichida nima) "qayta qo'ng'iroq" deb nomlangan parametr yo'q.

      Agarda comment.php Sizning shabloningiz shunday vaziyat, keyin bu shuni anglatadiki, ushbu mavzu sharhlarni ko'rsatish uchun o'z (foydalanuvchi) funktsiyasiga ega emas va buning uchun standart shablon (WordPress yadrosidan shablon) ishlatiladi. U faylda joylashgan. Va shundan beri Bunday holda, biz ikkinchi variantga o'tmagunimizcha, sharhlarni ko'rsatish uslublarini o'zgartira olmaymiz.

      2. Qayta qo'ng'iroq bilan wp_list_comments ga qo'ng'iroq qiling:

      "type=comment&avatar_size=48&callback=custom_comment") ; ?>

      qayta qo'ng'iroq = moslashtirilgan_sharh ekanligini bildiradi sharhlarni ko'rsatish uchun bizda maxsus funksiya mavjud moslashtirilgan_sharh , uning kodi, taxminan aytganda, biz standart funktsiyaga bajarish parametri sifatida o'tamiz wp_list_comments. Ammo biz endi bu masalaning texnik tomoni bilan emas, balki shablonda sharhlarni ko'rsatish uchun o'z funktsiyasi mavjudligi bilan qiziqamiz. Ushbu funktsiyaning kodi -da joylashgan.

      Aynan shu maxsus funktsiyada moslashtirilgan_sharh va individual sharhning ko'rinishi uchun mas'ul bo'lgan kod va shuning uchun bir butun sifatida barcha sharhlar joylashgan.

      Maxsus funktsiya kodi intuitivdir. U odatda quyidagi standart WordPress xususiyatlaridan foydalanadi:

      get_comment_author_link()– joriy sharh muallifining veb-saytiga html havolasini oladi;

      get_comment_date()– sharh sanasini oladi;

      get_comment_time()- sharh vaqtini oladi;

      comment_text()– sharh matnini aks ettiradi;

      Siz kodda ushbu funksiyalarga ega parchalarni topishingiz va ularni divs yoki spanlarda ramkalash va muayyan uslub sinflarini belgilash orqali ba'zi elementlarning ko'rinishini o'zgartirishingiz mumkin.

      Masalan, maxsus funksiya kodida avatar chiqishining bir qismi:

      < div class = "comment-author" >

      < / div >

      Endi u ichida qoladi style.css sinfga kerakli xususiyatlarni o'rnating sharh muallifi. Men keyingi maqolalardan birida uslublarni o'zgartirishning aniq misollarini batafsil ko'rib chiqaman.

      Endi siz hayron bo'lishingiz mumkin: " Agar shablonimda maxsus izoh funksiyasi bo'lmasa-chi?

      Javob: uni yaratishingiz kerak.

      Eng oson variant - standart WordPress funktsiyasi kodini nusxalash izoh().

      Sharhlarni ko'rsatish uchun maxsus funktsiyani yaratish bo'yicha ko'rsatmalar:

      1. Faylni oching /wp-includes/comment-template.php va undagi funksiyani toping izoh().

      Mana uning tavsifining boshlanishi

      /** * @since 3.6 * @access protected * * @param obyekti $comment Ko'rsatish uchun sharh. * @param int $depth Sharh chuqurligi. * @param massivi $args Ixtiyoriy args. */ himoyalangan funksiya izohi ($comment, $depth, $args) (

      * @3.6 dan beri

      * @access himoyalangan

      * @param obyekti $comment Ko'rsatish uchun sharh.

      * @param int $depth Sharh chuqurligi.

      * @param massivi $args Ixtiyoriy args.

      himoyalangan funksiya izohi ($comment, $depth, $args) (

      2. Butun funktsiya tanasini nusxalash izoh().

      Kod qismini 1-bosqichda ko'rsatilgan tavsifning boshidan yopish jingalak qavsgacha nusxalashingiz kerak. } va boshqa funktsiyaning quyidagi o'xshash tavsifi