۰ شهریار حسین زاده
pagination‌های مختلفت در یک صفحه
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۰۸ آذر ۱۴۰۱

سلام و درود

اگر چنتا کوئری داشتیم داخل صفحه و میخواستیم از pagination استفاده کنیم

میتونیم از روش زیر هم استفاده کنیم , (البته همان طور که استاد فرمودند خیلی به ندرت پیش می‌آید و بیشتر از مشاهده همه مطالب استفاده میکنند)

فرضیات :‌من ۲ تا کوئری دارم یکیش دیفالت کوئری هست یکیش کاستوم کوئری هست

(حالا میشه فرض کرد جفتشم کاستوم کوئری باشه یا بلعکس)

    $current   = max(1, (int) filter_input(INPUT_GET, 'p-pages'));
    $args = [
        'post_type'      => 'post',
        'posts_per_page' => 1,
        'post_status'    => 'publish',
        'paged' => $current
    ];
    $the_query = new WP_Query($args);

تیکه کد بالا فرض کنیم برای کوئری اول ما باشه و برای paginate کردن هم از کد زیر برای کوئری اول استفاده میکنیم

    $big = 999999999;
    echo paginate_links([
        'base' => str_replace( $big, '%#%', home_url()."%_%"),
        'format' => '?p-pages=%#%',
        'current' => $current,
        'total' => $the_query->max_num_pages
    ]);
    $the_query->rewind_posts()

این تیکه کد بالا باعث میشه که url‌های نامبر‌های pagination ما از مقدار format بخونه

(قسمتی که داخل مقدار base زدیم , %_% , باعث میشه مقدار داخل format را بخونه )

و تمام حالا وقتی بریم و inspect بگیریم روی pagination خودمون میبینیم که کوئری استرینگ دیفالت وردپرس که روی page بوده تبدیل میشه به مقدار دلخواه ما که داخل format نوشتیم

حالا برای کوئری‌های دیگمونم میتونیم از همین روش استفاده کنیم فقط داخل format و عوض میکنیم میبینیم که به راحتی هر paginate مربوط به خودش هست و با تغییرpaginate یک کوئری , paginate‌های دیگه تغییر نمیکنه

البته که روش‌های دیگه هم میتونه باشه و صد در صد هست ولی خب اینم یک راهی هست

حالا دوستان اگر روش‌های دیگه ای هم دارن بگن عالی میشه و ما هم استفاده میکنیم