تم فارست فارسی

لایک دیدگاه وردپرس بدون افزونه

لایک دیدگاه وردپرس بدون افزونه

در این آموزش به شما خواهیم گفت که چگونه بدون استفاده از افزونه ، لایک نظرات وردپرس ایجاد کنید. وجود لایک برای نظرات میتواند یک آپشن جذاب برای کاربران سایت شما باشد تا دیدگاه هایی را که میپسندند لایک کنند.

کدهایی که ما برای شما در این مطلب قرار دادیم بسیار ساده و بهینه میباشد و اگر کمی با کدنویسی آشنایی داشته باشید میتوانید با کمی تغییر داخل آن قابلیت دیسلایک را نیز به نظرات خود اضافه کنید.

ایجاد لایک دیدگاه وردپرس بدون افزونه

کد های ما به ۴ دسته تقسیم میشوند:

  • HTML
  • جی کوئری یا AJAX
  • PHP
  • CSS

کد اول را باید درون فایل comments.php و درون تابع callback فراخوانی نظرات استفاده کنید، ما در کدهای خودمون که از این لایک نظرات بهره بردیم از تابع wp_list_comments() برای نمایش دیدگاه ها استفاده کردیم

اگر در مورد توابع بالا آشنایی ندارید کافیست عبارت codex wp_list_comments را در گوگل جستجو کنید تا هم بان آن آشنا شوید هم به کدهای کامل نمایش نظرات دست یابید

کد اول به شکل زیر میباشد:

<div class="d-inline-block mr-3">
    <span class="response response-<?php echo $comment->comment_ID; ?> d-inline-block mr-1">
        <?php echo get_comment_meta( $comment->comment_ID, '_like_comment', true ); ?>
    </span>
    <?php if (isset($_COOKIE["like-comment-$comment->comment_ID"])){ ?>
    <a href="#" class="comment-like-<?php echo $comment->comment_ID; ?> event-none" comment-id="<?php echo $comment->comment_ID; ?>">LIKED</a>
    <?php }else{ ?>
    <a href="#" class="comment-like comment-like-<?php echo $comment->comment_ID; ?>" comment-id="<?php echo $comment->comment_ID; ?>">LIKE</a>
    <?php } ?>
</div>

کد دوم ما جی کوئری یا ایجکس هست که آن ها را باید درون یک فایل js قرار دهیم تا اجرا شود، معمولا در قالب ها فایل های js به نام های custom.js یا main.js قرار دارند که در انتهای یا ایتدای آن این کد را قرار دهید

(function ($) {
        $(document).ready(function () {
 
// Ajax Like
 
            $(".comment-like").click(function (e) {
                    e.preventDefault();
                    var idcm = $(this).attr('comment-id');
                $.ajax({
                    type: 'POST',
                    url: favorites_data.ajaxurl,
                    data: {"action": "like-comment", idcomment: idcm },
                    success: function(response) {
                        $(".comment-like-"+idcm).html('LIKED');
                        $(".comment-like-"+idcm).addClass('event-none');
                        $(".response-"+idcm).html(response);
                    }
                });
            });
   });
}(jQuery));

در مرحله سوم باید کدهای php را در انتهای فایل functions.php قالب خود قرار دهید و ذخیره کنید:

add_action( 'wp_ajax_nopriv_like-comment', 'like_comment_ajax' );
add_action( 'wp_ajax_like-comment', 'like_comment_ajax' );
function like_comment_ajax () {
    $value = "ok";
    if ( metadata_exists( 'comment', $_POST['idcomment'], '_like_comment' ) ) {
        $gtlike = get_comment_meta( $_POST['idcomment'], '_like_comment', true );
        $gtlike += 1;
        update_comment_meta( $_POST['idcomment'], '_like_comment', $gtlike );
        echo get_comment_meta( $_POST['idcomment'], '_like_comment', true );
        setcookie("like-comment-".$_POST['idcomment'], $value, time()+ 60*60*24*30,"/");
    }else{
        add_comment_meta( $_POST['idcomment'], '_like_comment', 1 );
        echo get_comment_meta( $_POST['idcomment'], '_like_comment', true );
        setcookie("like-comment-".$_POST['idcomment'], $value, time()+ 60*60*24*30,"/");
    }
    exit();
}

مرحله چهارم و آخر نیز بسیار ساده میباشد و کافیست کد کوتاه css زیر را به انتهای فایل Style.css خود قرار دهید. اگر کمی با کد های css آشنایی داشته باشید میتوانید زیبایی بیشتری به دکمه لایک دهید و آن را نمایان کنید

.event-none{
    pointer-events: none;
}

این سیستم بر اساس کوکی میباشد و کاربری که یکبار دیدگاهی را لایک کند ، به مدت یک ماه نمیتواند دیگر آن دیدگاه را لایک کند

mojadam

    نوشته‌های مرتبط

    قوانین ارسال دیدگاه

    • دیدگاه های فینگلیش تایید نخواهند شد.
    • دیدگاه های نامرتبط به مطلب تایید نخواهد شد.
    • از درج دیدگاه های تکراری پرهیز نمایید.
    دیدگاه‌ها

    *
    *

    0