رفتن به مطلب

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


جاوید

پست های پیشنهاد شده

من برای یک پروژه وردپرسی از 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 );

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

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

لینک به ارسال
  • 2 هفته بعد...

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

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

لینک به ارسال

باز خوبه آقا مصطفی خودش جواب داد :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

لینک به ارسال
  • 2 سال بعد...
در در 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

 

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

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

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

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

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

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

 

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

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...