نمایش آمار بازدید از مطالب بدون نیاز به افزونه

نمایش بازدید از مطالب بدون نیاز به افزونه

یکی از بخش های مهم هر سایت، بدست آوردن آمار بازدید از مطالب منتشر شده و گاها نمایش آن است. این آمار را در وردپرس، می توان توسط افزونه هایی همچون post veiws و… به دست آورد. اما، امروز آموزشی را تدارک دیده ایم که توسط آن بدون نیاز به هیچ گونه افزونه، به راحتی قادر خواهید بود آمار بازدید از مطالب خود را بدست آورید.

برای این منظور، دوتابع را به صورت زیر تعریف می کنیم (این کدها را در فایل توابع (function.php)  قالب خود قرار دهید):

function set_post_views( $postID ) 
{
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        $count = 0;
        // delete old 'post_views_count' value.
        delete_post_meta( $postID, $count_key );
        // add new 'post_views_count' value.
        add_post_meta( $postID, $count_key, '0' );
    } else {
        $count++;
        // update old 'post_views_count' value.
        update_post_meta( $postID, $count_key, $count );
    }
}

function get_post_views( $postID )
{
    $count_key = 'post_views_count';
    $count = get_post_meta( $postID, $count_key, true );
    if($count=='') {
        // delete old 'post_views_count' value.
        delete_post_meta( $postID, $count_key );
        // add new 'post_views_count' value.
        add_post_meta( $postID, $count_key, '0' );

        return "0 بازدید";
    }

    return $count.' بازدید';
}

این دو تابع با دریافت آی دی هر پست (با تابع get_the_ID که جلوتر به آن خواهیم رسید) به ترتیب کار ثبت و نمایش آمار بازدید از هر مطلب را انجام میدهند.
این دوتابع از شرط هایی ساده بهره گیری کرده اند، به عنوان نمونه، تابع set_post_views  با استفاده از تابع پیشفرض وردپرسی get_post_meta آمار ثبت شده ی هر پست را در متغیر $count می ریزد و در صورت خالی نبودن متغیر، شرط دوم اجرا شده و یک واحد به آن اضافه می شود. سپس نوبت به روزرسانی اطلاعات آماری است که این کار هم توسط تابع update_post_meta انجام میگیرد.

جهت آشنایی با توابع پیشفرض استفاده شده می توانید مستندات وردپرس را مطالعه کنید:

و اما در آخرین مرحله، لازم است تا توابع بالا را فراخوانی و سپس چاپ کنیم. پس به صورت زیر عمل کنید:

مرحله اول:

جهت ثبت اطلاعات، تابع زیر را داخل حلقه (while) در فایل تک نوشته ها (single.php) قرار دهید.

<?php set_post_views (get_the_ID()); ?>

 مرحله دوم:

پس از ثبت آمار، نوبت به چاپ اطلاعات میرسد.
بنابراین، از قطعه کد زیر در مکانی که میخواهید اطلاعات آماری نمایش داده شود، استفاده کنید.

<?php echo get_post_views (get_the_ID()); ?>

و به همین سادگی کار به اتمام میرسد…

منبع : دنیای وردپرس و برنامه نویسی – www.alimir.ir

راستی اگه این مطلب رو مفید دیدید، لایک فراموشتون نشه :)

دیدگاه کاربران در مورد این نوشته

  1. با سلام یه سوال داشتم نمیدونستم کجا عنوان کنم از طریق سرچ به این صفحه رسیدم اگه راهنمایی کنید ممنون میشم :

    من تو ساختار html دو سطر دارم با کلاس های متفاوت که هر سطر سه ستون داره به شکل زیر :

    من میخوام 3 تا div اول که کلاس col-md-4 داره بیفته داخل div با کلاس row mt-lg و این کلاس بسته شه و بعد 3 تا div بعدی بازهم با کلاس col-md-4 این دفعه بیفته تو div بعدی که کلاس row mt-md mb-xl داره

    اینارو به این شکل داخل حلقه قرار دادم :

    حالا مشکلم اینه که هر 6 تا div با کلاس col-md-4 میفته داخل div با کلاس row mt-lg در صورتی که من میخوام سه تای اول بیفته تو div با کلاس row mt-lg و سه تا بعدی بیفته داخل div با کلاس row mt-md mb-x1

    توسط سینا پاسخ

  2. سلام
    آقای میرزایی لطفا جواب بدین
    چطور میتونم مطالب رو بر حسب تعداد بازدید نشون بدم؟
    لطفا کمک کنید…

    توسط hassan پاسخ

    1. سلام حسن جان.
      برای این کار باید یک حلقه مطالب (کوئری) بسازی و مقدار کلید orderby رو بر حسب متافیلد بازدیدها تنظیم کنی. مستندات بیشتر در لینک زیر:
      http://tiny.alimir.ir/ZbS

      توسط علی میرزائی پاسخ

  3. سلام
    دوست عزیز میخاستم تابعی باش که فقط بر اسا ای پی باش ینی من الان این کدو گذاشتم هر رفرشی که میکنم یدونه میزنه ولی میخام هزار تا رفرش کردم فقط یدونه بزنه بر اتسا ای پی باش هر ای پی یدونه باس هر مطلب بش اگ کمکم کنید ممنونتون میشم

    توسط a.m پاسخ

  4. سلام میشه قسمت حلقه while ش رو راسم بنویسید.کامل
    متشکر

    توسط ehsan پاسخ

    1. سلام. میتونید از مستندات اصلی وردپرس استفاده کنید:
      http://tiny.alimir.ir/orY

      توسط علی میرزائی پاسخ

دیدگاه خود را بیان کنید