جاوید

عضو سایت
  • تعداد ارسال ها

    3
  • تاریخ عضویت

  • آخرین بازدید

اعتبار در انجمن

0

درباره جاوید

  • درجه
    تازه کار
  • تاریخ تولد 03/08/64

اطلاعات شخصی

  • جنسیت
    مرد
  • موقعیت
    کرمان
  • آشنایی با وردپرس
    تسلط کامل
  • سطح برنامه نویسی
    تسلط کامل
  • آشنایی با طراحی
    تسلط کامل

آخرین بازدید کنندگان نمایه

93 بازدید کننده نمایه
  1. این کد مال سایت منه که از پرفیکس tt_ استفاده میکنه. به جای tt_posts از wp_posts بزار و تست کن.
  2. باز خوبه آقا مصطفی خودش جواب داد توضیحش طولانیه ولی اگه کسی بعدا خواست استفاده کنه، کوئری بالا جواب دقیق نمیده و این کوئری اصلاح شده بهتره :‌ 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
  3. من برای یک پروژه وردپرسی از 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 ); نتیجه رو میتونید توی صفحه اول تیتر ببینید. لطفا نظراتتون در مورد این روش رو برای من بنویسید و خوشحال میشم اگه پیشنهادی برای برای بهتر شدن دارید بهم بگید.