فرشاد گوهری 1681 ارسال شده در خرداد 97 گزارش بازنشر ارسال شده در خرداد 97 (ویرایش شده) درود خدومت دوستان عزیز من در حال حاضر یک کدی دارم که مطالب یک دستهبندی خاص رو از صفحهی اصلی حذف میکنه (نمایش نمیده) این بخشی از کد من هست: function my_exclude_category( $query ) { if ( $query->is_home ) { $query->set( 'cat', '-933' ); } return $query; } add_filter( 'pre_get_posts', 'my_exclude_category' ); که در اینجا 933 آیدی اون دستهبندی هست که مطالبش حذف میشه. حالا میخوام این کد رو جوری تغییر بدم که مطالب این دسته بندی بلافاصه حذف نشن، بلکه فقط مطالبی حذف بشن که مدت زمان خاصی (مثلا 30 روز) از زمان انتشارشون میگذره. از دوستان کسی هست که بتونه راهنماییم کنه چجوری کدم رو ادیت کنم و بازهی زمانی هم بش اضافه کنم؟ پیشاپیش سپاس از راهنماییتون ویرایش شده خرداد 97 توسط Farshad نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در خرداد 97 گزارش بازنشر ارسال شده در خرداد 97 سلام و درود @Farshad نکته اول اینه که هوک pre_get_posts از نوع اکشن هست نه از نوع فیلتر. فک میکنم کد زیر برای موردی که گفتید جواب بده. add_action('pre_get_posts', 'remove_old_cat_posts', 1); function remove_old_cat_posts($query) { if($query->is_main_query() && ($query->is_home() || $query->is_front_page())) { remove_action('pre_get_posts', 'remove_old_cat_posts', 1); $my_query = new WP_Query(array( 'cat' => 31, 'post_status' => 'publish', 'posts_per_page' => -1, 'date_query' => array( array( 'before' => '1 month ago', ) ), 'fields' => 'ids' )); add_action('pre_get_posts', 'remove_old_cat_posts', 1); $post__not_in = $my_query->posts; $query->set('post__not_in', $post__not_in); } } موفق باشید 1 نقل قول لینک به ارسال
فرشاد گوهری 1681 ارسال شده در خرداد 97 مالک گزارش بازنشر ارسال شده در خرداد 97 در ۱ ساعت قبل، mehran-b گفته است : سلام و درود @Farshad نکته اول اینه که هوک pre_get_posts از نوع اکشن هست نه از نوع فیلتر. فک میکنم کد زیر برای موردی که گفتید جواب بده. موفق باشید ممنون از وقتی که گذاشتید مهران جان، با یه کمی تغییر جواب داد. نمیدونم حالا مشکل از قالب من بود یا چیز دیگری ولی برای اینکه کد کار کنه اولین شرط رو (is_main_query) ازش حذف کردم تا به درستی کار بکنه، کد رو قرار میدم، اگر در آینده کسی از دوستان به چنین مشکلی خورد بتونه استفاده کنه ازش. add_action('pre_get_posts', 'remove_old_cat_posts', 1); function remove_old_cat_posts($query) { if(($query->is_home() || $query->is_front_page())) { remove_action('pre_get_posts', 'remove_old_cat_posts', 1); $my_query = new WP_Query(array( 'cat' => 933, 'post_status' => 'publish', 'posts_per_page' => -1, 'date_query' => array( array( 'before' => '1 month ago', ) ), 'fields' => 'ids' )); add_action('pre_get_posts', 'remove_old_cat_posts', 1); $post__not_in = $my_query->posts; $query->set('post__not_in', $post__not_in); } } مجددا ممنونم از وقتی که برای پاسخ گذاشتید مهران عزیز @mehran-b 1 نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در خرداد 97 گزارش بازنشر ارسال شده در خرداد 97 در 1 ساعت قبل، Farshad گفته است : نمیدونم حالا مشکل از قالب من بود یا چیز دیگری ولی برای اینکه کد کار کنه اولین شرط رو (is_main_query) ازش حذف کردم تا به درستی کار بکنه احتمالا در قالب شما به علت اینکه طراح قصد تعریف پارامترهای خاص برای نمایش پست ها رو داشتن از حلقه ثانویه در صفحه home استفاده شده در نتیجه متد is_main_query مقدار false رو برمیگردونه. فقط توجه داشته باشید با حذف is_main_query هر تعداد حلقه که در صفحه اصلی دارید هوک فوق بر روی آن ها تاثیر میذاره. در 1 ساعت قبل، Farshad گفته است : مجددا ممنونم از وقتی که برای پاسخ گذاشتید مهران عزیز خواهش میکنم موفق باشید 1 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .