جاوید 0 ارسال شده در فروردین 94 گزارش بازنشر ارسال شده در فروردین 94 من برای یک پروژه وردپرسی از 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.idGROUP BY idحالا میتونیم سورت رو انجام بدیم و ۱۰ نتیجه آخر رو دریافت کنیم:SELECT *FROM `wp_statistics_pages`JOIN `wp_posts`ON wp_posts.ID = wp_statistics_pages.idGROUP BY idORDER BY countDESCLIMIT 10من به یک نوع مطلب خاص (publication) نیاز داشتم و فقط شناسه ها رو میخوام، پس کوئری نهایی من میشه این :SELECT wp_statistics_pages.idFROM `wp_statistics_pages`JOIN `wp_posts`ON wp_posts.ID = wp_statistics_pages.idWHERE wp_posts.post_type = 'publication'GROUP BY idORDER BY countDESCLIMIT 6حالا این کوئری رو توی وردپرس اجرا میکنم و نتایج رو به دست میارم :global $wpdb;$results = $wpdb -> get_results('SELECT wp_statistics_pages.idFROM `wp_statistics_pages`JOIN `wp_posts`ON wp_posts.ID = wp_statistics_pages.idWHERE wp_posts.post_type = 'publication'GROUP BY idORDER BY countDESCLIMIT 10', ARRAY_A );و در نهایت با استفاده از این موارد به دست آمده لوپ نهایی خودم رو میسازم، اینجا لازمه که مجددا نوع مطلب رو هم مشخص کنیم و برای اینکه ترتیب به هم نخوره هم از 'orderby' => 'post__in' استفاده میکنم: $args = array('post_type' => 'publication','post__in' => $results,'orderby' => 'post__in');$query = new WP_Query( $args );نتیجه رو میتونید توی صفحه اول تیتر ببینید.لطفا نظراتتون در مورد این روش رو برای من بنویسید و خوشحال میشم اگه پیشنهادی برای برای بهتر شدن دارید بهم بگید. نقل قول لینک به ارسال
Mostafa 2587 ارسال شده در فروردین 94 گزارش بازنشر ارسال شده در فروردین 94 سلام، بله در حال حاضر از کوئری پشتیبانی نمیکنه.اگر خروجی گرفتید و مشکلی نبوده که دیگر هیچی. با تغییراتی در جدول هم میشه کدنویسی هارو کمتر کرد. ولی این مورد چون دیگه امکان به روز رسانی نداره، پیشنهاد نمیشه. نقل قول لینک به ارسال
جاوید 0 ارسال شده در فروردین 94 مالک گزارش بازنشر ارسال شده در فروردین 94 باز خوبه آقا مصطفی خودش جواب داد توضیحش طولانیه ولی اگه کسی بعدا خواست استفاده کنه، کوئری بالا جواب دقیق نمیده و این کوئری اصلاح شده بهتره :SELECT wp_statistics_pages.idFROM `wp_statistics_pages`JOIN `tt_posts`ON wp_posts.ID = wp_statistics_pages.idWHERE wp_posts.post_type = 'publication'GROUP BY wp_posts.idORDER BY sum(wp_statistics_pages.count)DESCLIMIT 6 نقل قول لینک به ارسال
mahdi0000 0 ارسال شده در مرداد 96 گزارش بازنشر ارسال شده در مرداد 96 در در 4/20/2015 at 13:57، جاوید گفته است : باز خوبه آقا مصطفی خودش جواب داد توضیحش طولانیه ولی اگه کسی بعدا خواست استفاده کنه، کوئری بالا جواب دقیق نمیده و این کوئری اصلاح شده بهتره : 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 ارسال شده در مرداد 96 مالک گزارش بازنشر ارسال شده در مرداد 96 در در 8/8/2017 at 01:37، mahdi0000 گفته است : برا من هیچکدومش کار نکرد میشه بیشتر راهنمایی کنید؟ این کد مال سایت منه که از پرفیکس tt_ استفاده میکنه. به جای tt_posts از wp_posts بزار و تست کن. نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .