جاوید

استفاده از wp_statistics در Loop

5 پست در این موضوع قرار دارد

من برای یک پروژه وردپرسی از wp_statistics استفاده میکنم که آمار بازدیدهای سایت رو برای من ثبت میکنه.

نیاز داشتم که نوشته ها رو بر اساس تعداد بازدید نشون بدم اما متاسفانه این افزونه از WP_Query ساپورت نمیکنه .

اما همیشه راه حلی هست، در ادامه روشی که من برای گرفتن ۱۰ پست پربازدید استفاده کردم رو توضیح میدم، اگه پیشنهادی دارید لطفا بگید تا این روش رو بهتر کنیم.

ما در WP_Query با استفاده از post__in میتونیم شناسه پست ها رو بدیم و لوپ رو بر اساس اون شناسه ها بسازیم.

پس اگه شناسه مطالب بر اساس بازدید رو به دست بیاریم میتونیم لوپ مورد نظر رو بسازیم.

افزونه آمار، اطلاعات بازدید رو در جدول statistics_pages ذخیره میکنه، لازم بود که این جدول رو با جدول مطالب جوین کنیم تا اطلاعات رو به دست بیارم


SELECT *
FROM `wp_statistics_pages`
JOIN `wp_posts`
ON wp_posts.ID = wp_statistics_pages.id

حالا مشکل اینجاست که این روش مجموع بازدید ها رو برای ما نمیاره و بازدیدهای هر روز رو در یک ردیف میاره و ردیفهای بسیار زیادی ایجاد میشه و سورت کردن ممکن نیست.

پس لازمه که این خروجی رو بر اساس شناسه گروه‌بندی کنیم:


SELECT *
FROM `wp_statistics_pages`
JOIN `wp_posts`
ON wp_posts.ID = wp_statistics_pages.id
GROUP BY id

حالا میتونیم سورت رو انجام بدیم و ۱۰ نتیجه آخر رو دریافت کنیم:


SELECT *
FROM `wp_statistics_pages`
JOIN `wp_posts`
ON wp_posts.ID = wp_statistics_pages.id
GROUP BY id
ORDER BY count
DESC
LIMIT 10

من به یک نوع مطلب خاص (publication) نیاز داشتم و فقط شناسه ها رو میخوام، پس کوئری نهایی من میشه این :‌


SELECT wp_statistics_pages.id
FROM `wp_statistics_pages`
JOIN `wp_posts`
ON wp_posts.ID = wp_statistics_pages.id
WHERE wp_posts.post_type = 'publication'
GROUP BY id
ORDER BY count
DESC
LIMIT 6

حالا این کوئری رو توی وردپرس اجرا میکنم و نتایج رو به دست میارم :‌


global $wpdb;
$results = $wpdb -> get_results('SELECT wp_statistics_pages.id
FROM `wp_statistics_pages`
JOIN `wp_posts`
ON wp_posts.ID = wp_statistics_pages.id
WHERE wp_posts.post_type = 'publication'
GROUP BY id
ORDER BY count
DESC
LIMIT 10', ARRAY_A );

و در نهایت با استفاده از این موارد به دست آمده لوپ نهایی خودم رو میسازم، اینجا لازمه که مجددا نوع مطلب رو هم مشخص کنیم و برای اینکه ترتیب به هم نخوره هم از 'orderby' => 'post__in' استفاده میکنم:


$args = array(
'post_type' => 'publication',
'post__in' => $results,
'orderby' => 'post__in'
);
$query = new WP_Query( $args );

نتیجه رو میتونید توی صفحه اول تیتر ببینید.

لطفا نظراتتون در مورد این روش رو برای من بنویسید و خوشحال میشم اگه پیشنهادی برای برای بهتر شدن دارید بهم بگید.

0

به اشتراک گذاری این پست


لینک به پست

سلام، بله در حال حاضر از کوئری پشتیبانی نمیکنه.

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

0

به اشتراک گذاری این پست


لینک به پست

باز خوبه آقا مصطفی خودش جواب داد :rolleyes:

توضیحش طولانیه ولی اگه کسی بعدا خواست استفاده کنه، کوئری بالا جواب دقیق نمیده و این کوئری اصلاح شده بهتره :‌


SELECT wp_statistics_pages.id
FROM `wp_statistics_pages`
JOIN `tt_posts`
ON wp_posts.ID = wp_statistics_pages.id
WHERE wp_posts.post_type = 'publication'
GROUP BY wp_posts.id
ORDER BY sum(wp_statistics_pages.count)
DESC
LIMIT 6

0

به اشتراک گذاری این پست


لینک به پست
در در 4/20/2015 at 13:57، جاوید گفته است :

باز خوبه آقا مصطفی خودش جواب داد :rolleyes:

توضیحش طولانیه ولی اگه کسی بعدا خواست استفاده کنه، کوئری بالا جواب دقیق نمیده و این کوئری اصلاح شده بهتره :‌

 

 

SELECT wp_statistics_pages.id
FROM `wp_statistics_pages`
JOIN `tt_posts`
ON wp_posts.ID = wp_statistics_pages.id
WHERE wp_posts.post_type = 'publication'
GROUP BY wp_posts.id
ORDER BY sum(wp_statistics_pages.count)
DESC
LIMIT 6

 

برا من هیچکدومش کار نکرد

میشه بیشتر راهنمایی کنید؟

0

به اشتراک گذاری این پست


لینک به پست
در در 8/8/2017 at 01:37، mahdi0000 گفته است :

برا من هیچکدومش کار نکرد

میشه بیشتر راهنمایی کنید؟

این کد مال سایت منه که از پرفیکس tt_ استفاده میکنه.

 

به جای tt_posts از wp_posts بزار و تست کن.

0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط mory_fun
      سلام دوستان
      یک دامین جدید برای سایتم ادد کردم و بقیه رو به این شکل ریدایرکت کردم درسته ؟
      RewriteEngine on RewriteCond %{HTTP_HOST} ^www.old.ir [NC,OR] RewriteCond %{HTTP_HOST} ^old.ir [NC] RewriteCond %{HTTP_HOST} ^www.new.xyz [NC] RewriteRule ^(.*)$ http://new.xyz/$1 [L,R=301,NC]  
    • توسط Selno
      سلام دوستان چجوری میشه واسه یه همچین چیزی یه loop ساخت که چهارتا پست رو نشون بده ؟ آخه متاسفانه پست ها تو دو بلاک مختلف قرار گرفتن !
      <?php $queryObject = new Wp_Query(array( 'showposts' => 2, 'post_type' => array('post'), 'orderby' => 1, )); if ($queryObject->have_posts()) : $i = 0; while ($queryObject->have_posts()) : $queryObject->the_post(); if ($i < 2 ) : ?> از این روش هم استفاده کردم ولی چون یکی از اون بلاک های توی تصویر وسط این لوپ قرار داره هی ساخته میشه و همه چی رو خراب میکنه !!!

    • توسط naderi
      سلام .. برای توسعه یک وب سایت با قالب Eduma وردپرس میخوایم یه سری قابلیت ها رو بهش اضافه کنیم .. از دوستان کسی هست که بتونه به ما کمک کنه؟
    • توسط s.m.a1383
      سلام می خواستم ببینم به جای اینکه محصولات رو توی صفحه اول سایت بگذارم میشه دسته های محصولات رو توی صفحه اول سایت گذاشت؟
      آدرس سایت من:innolabs.ir
      در ضمن از پوسته "هستیا "استفاده میکنم افزونه یا کدی هست که بتونه به جای نمایش محصولات در صفحه اول دسته های محصولات رو نمایش بده در ضمن هر کد یا افزونه ای که گفتید طریقه انجامش رو هم بگید لطفا.
      خیلی ممنون از لطفتون
    • توسط resanehwp
      دوستانی که می خوان قلاب های ووکامرس و ترتیب اجرای اونها رو یاد بگیرن
      در لینک زیر صفحه آرشیو محصولات رو می تونید بررسی کنید
      http://bit.ly/rhwp1006