نویسنده: علی باقری نیا
تاریخ: ۱۷,شهریور,۱۳۹۲
آخرین ویرایش: ۰۳ مرداد ۱۳۹۶
بدون دیدگاه
642 بازديد

صفحه بندی مطالب در وردپرس

و چگونه می توان آن را افزایش داد. طرح صفحه بندی ...

امتیاز دهید :

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...
  • در این مقاله / آموزش به اصول اولیه ی صفحه بندی در وردپرس، تنظیمات صفحه بندی پیش فرض

    و چگونه می توان آن را افزایش داد.
    طرح صفحه بندی پیش فرض
    فراموش نکنید در هنگام صفحه بندی، وردپرس باید بداند که در لیست هر صفحه چند آیتم وجود خواهد داشت. این مقدار اولیه (value) در مدیریت -> تنظمیات -> خواندن صفحه ی تنظیمات، تنظیم شده است.

    tanzim صفحه بندی مطالب در وردپرس

    مقدار اولیه “Blog pages show at most” توسط وردپرس استفاده خواهد شد، مگر اینکه شما آن را لغو کنید، مانند هنگامی که از یک تحقیق سفارشی استفاده می کند.
    کد صفحه بندی پیش فرض
    یک نمونه ی متداول از نشان دادن یک لیست از چندین پست، زمانی است که شما همه ی پیام ها را در یک رده بندی مشاهده می کنید. نمایش دادن پست های طبقه بندی شده توسط فایل الگویcategory.php صورت می گیرد. برای تم ۲۰۱۱، صفحه رده بندی، نمایش صفحه بندی را به یک تابع به نام twentyeleven_content_nav می دهد، که در فایل functions.php یافت می شود.

    ۱
    ۲
    ۳
    ۴
    ۵
    ۶
    ۷
    ۸
    ۹
    ۱۰
    ۱۱
    ۱۲
    ۱۳
    ۱۴
    function twentyeleven_content_nav( $nav_id ) {
      global $wp_query;
      if ( $wp_query->max_num_pages > 1 ) : ?>
      <nav id="<?php echo $nav_id; ?>">
        <h3 class="assistive-text"><?php _e( 'Post navigation', 'twentyeleven' ); ?></h3>
        <div class="nav-previous"><?php next_posts_link( __( '<span>←</span> Older posts', 'twentyeleven' ) ); ?></div>
        <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span>→</span>', 'twentyeleven' ) ); ?></div>
      </nav><!-- #nav-above -->
      <?php endif;
    }

    کد بالا همچنین می توانست فقط به طور مستقیم درcategory.php گنجانده شود، اما طراحان دوهزار و یازده تصمیم گرفتند آن را به یک تابع تبدیل کنند به طوری که می توان آن را از بسیاری از فایل های الگو فرا خواند. بیشتر این کد برای مقاصد طرح بندی و بین المللی کردن است، اما آنچه انجام می دهد در اینجا آمده است:
    • با استفاده از مقدار اولیه متغیرهای جستجو سراسری $ wp_query-> max_num_pages ، بررسی می کنیم که آیا بیش از یک صفحه داریم یا نه، با این روش از نشان دادن کل انسداد صفحه بندی در صورت وجود تنها یک صفحه از پست ها، اجتناب می کنیم
    • تابع وردپرسnext_posts_link یک لینک را به صفحه بعدی پست ها نمایش می دهد و یک آرگومان اختیاری برای متن لینک سفارشی می گیرد
    • به طور مشابه، تابع وردپرسprevious_posts_link یک لینک را به صفحه قبلی ارسال ها، نمایش می دهد
    و تصویر زیر همان چیزی است که در صورت انجام تنظیم دو پست در هر صفحه، به نظر خواهد رسید.

    default paging صفحه بندی مطالب در وردپرس

    این کار بسیار پیش پا افتاده، اما بسیار کاربردی است. مشکل این گونه نمایش صفحه، این است که هیچ راهی برای گفتن این که در کدام صفحه هستید، و یا در کل چند صفحه وجود دارد، نیست.
    یک چیز که باید درباره ی لیست کردن پیش فرض وردپرس به یاد داشته باشید این است که آنها در جهت معکوس اجرا می شوند:
    از آنجا که نمایش پست ها معمولا به ترتیب زمانی معکوس طبقه بندی شده اند،next_posts_link () معمولا به نوشته های قدیمی تر اشاره می کند (به سمت پایان مجموعه) وprev_posts_link () معمولا به نوشته های جدیدتر اشاره می کند (به سمت ابتدای مجموعه).
    اگر شما در حال ایجاد یک جستجوی سفارشی باشید، رفتار بالا را می توان تغییر داد. توجه داشته باشید در مثال بالا، دو بلوک صفحه بندی مورد استفاده قرار گرفت: یکی قبل از شروع حلقه پس و دیگری بعد از شروع حلقه. خوب است که همیشه در هر دو سمت بالا و پایین، صفحه بندی داسته باشیم، بنابراین کاربر نیازی به حرکت بیش از حد نخواهد داشت.
    مثال:
    برای نمایش “برو به صفحه ی بعد…” (“Go to next page…”) در حالی که متن را لینک می کنید:

    ۱
    next_posts_link('Go to next page...'); 

    برای نمایش یک تصویر به جای متن:

    ۱
    ۲
    $previous_posts_image = '<img src="' . get_bloginfo('stylesheet_directory') . '/images/previous_posts.png" />';
    previous_posts_link($previous_posts_image);

    پیشنهادهای متناوب
    یک جایگزین برای استفاده از تابع های جداگانه یnext_posts_link وprevious_posts_link وجود دارد، و آن تابع posts_nav_link است. در واقع، این تابع هر دو لینک قبلی و بعدی را در یک حرکت خارج می کند، با لینک متن اختیاری و لینک تفکیک کننده آرگومان ها.
    خروجی پیش فرض:

    ۱
    posts_nav_link(); 

    default paging alt صفحه بندی مطالب در وردپرس

    و با متن لینک سفارشی و تفکیک کننده:

    ۱
    posts_nav_link(':::', '<< Newer Posts', 'Older Posts >>'); 

    default paging alt custom صفحه بندی مطالب در وردپرس

    من استفاده از توابع جداگانه یnext_posts_link وprevious_posts_link را پیشنهاد می کنم زیرا که این کار به شما کنترل بیشتری بر روی عمل جای گذاری لینکتان می دهد و همچنین کد شما را قابل فهم تر خواهد کرد.
    صفحه بندی پست تکی
    هنگام نمایش پست تکی، خوب است که یک لینک به پست قبلی و بعدی در توالی نشان دهیم. فایل قالب single.php به وسیله ی کد زیر این کار را انجام می دهد:

    ۱
    ۲
    ۳
    ۴
    ۵
    <nav id="nav-single">
      <h3 class="assistive-text"><?php _e( 'Post navigation', 'twentyeleven' ); ?></h3>
      <span class="nav-previous"><?php previous_post_link( '%link', __( '<span>←</span> Previous', 'twentyeleven' ) ); ?></span>
      <span class="nav-next"><?php next_post_link( '%link', __( 'Next <span>→</span>', 'twentyeleven' ) ); ?></span>
    </nav><!-- #nav-single -->

    single default صفحه بندی مطالب در وردپرس

    انجام عمل بالا این را به شما خواهد داد:
    این توابعnext_post_link وprevious_post_link هستند که لینک های صفحه بندی را در سمت راست بالای صفحه ایجاد می کنند. این توابع دو پارامتر را قبول می کنند که به ما اجازه می دهد خروجی های آنها را به خوبی برای سفارشی کنیم. این پارامترها عبارتند از:

    ۱
    next_post_link( format, link, in_same_cat, excluded_categories );

    فرمت و لینک پارامترها با هم کار می کنند. فرمت این است که شما می خواهید لینک چگونه به نظر برسد: %link در فرمت به عنوان یک نگهدارنده برای محتوای لینک پارامتر استفاده می شود، که دقیقا متنی است که ما مایل به استفاده برای این لینک هستیم. بنابراین کد زیر:

    ۱
    ۲
    previous_post_link( '%link', '<< Next Newest Post' );
    next_post_link( '%link', 'Next Oldest Post >>' );

    این را به ما خواهد داد:

    single next newest صفحه بندی مطالب در وردپرس

    اگر ما می خواستیم عنوان واقعی پست های بعدی یا قبلی را نمایش دهیم، از یک مقدار اولیه ی ویژه ی %title در پارامترهای لینک استفاده می کردیم. بنابراین کد زیر:

    ۱
    ۲
    previous_post_link( '%link', '<< Previous Post: %title' );
    next_post_link( '%link', 'Next Post: %title >>' );

    این را به ما خواهد داد:

    single next title صفحه بندی مطالب در وردپرس

    پارامترهای باقی مانده به شما اجازه می دهند تا مطمئن شوید که پست بعدی لینک شده، در دسته بندی مشابهی قرار دارد و همچنین به شما اجازه ی حذف دسته بندی خاصی را نیز می دهند. از مستندات، همانطور که در لینک بالا آمده است، کمک بگیرید.
    شما می توانید یک تصویر برای لینک نمایش دهید مانند نمایش زیر:

    ۱
    ۲
    $previous_post_link_image = '<img src="' . get_bloginfo('stylesheet_directory') . '/images/previous_post_link.png" />';
    previous_post_link( '%link', $previous_post_link_image );

    یک راه حل بهتر
    به همان اندازه که روش های بالا آسان هستند، به همان اندازه هم محدود شده اند. خوشبختانه، وردپرس تابعpaginate_links را به ما می دهد. این تابع به ما اجازه می دهد که یک مجموعه واقعی از لینک های صفحه بندی ایجاد کنیم، مانند آنچه که در زیر می بینید:

    pagination default صفحه بندی مطالب در وردپرس

    در زیر آن کد وجود دارد که صفحه بندی بالا خروجی حاصل از آن است. بیایید نگاهی به آنچه در آن انجام می شود بیاندازیم:

    ۱
    ۲
    ۳
    ۴
    ۵
    ۶
    ۷
    ۸
    ۹
    ۱۰
    ۱۱
    ۱۲
    ۱۳
    ۱۴
    ۱۵
    global $wp_query;
    $total_pages = $wp_query->max_num_pages;
    if ($total_pages > 1){
      $current_page = max(1, get_query_var('paged'));
      
      echo paginate_links(array(
          'base' => get_pagenum_link(1) . '%_%',
          'format' => '/page/%#%',
          'current' => $current_page,
          'total' => $total_pages,
        ));
    }

    • سراسری کردن موضوعwp_query و بنابراین ما می توانیم مقدار اولیه یmax_num_pages را بازیابی کنیم: این تعداد کل صفحات نشان داده شده توسط جستجو است.
    • صفحه فعلی را به وسیله ی بازیابی متغیر ‘paged’ باget_query_var پیدا کنید: ما از تابع حداکثر برای تبدیل کردن صفحه فعلی به پیش فرض و به ۱، استفاده می کنیم
    • تابعpaginate_links مجموعه ای از پارامترها را نیاز دارد: چهار عامل مهم تر نمایش داده شده اند
    • با تابع get_pagenum_link، URL پایه را برای صفحه بازیابی والگوی %_% را به آن اضافه کنید، که توسط پارامتر فرمت next جایگزین خواهد شد
    • در مورد کار ما، یک الگوی فرمت را تعیین کنید که به شکلی که pretty permalinks به نظر می رسد، مطابقت کند (مجموعه ای با %postname% in Admin -> Settings -> Permalinks ) : کد %_% در پارامتر پایه توسط این جایگزین خواهد شد
    • صفحات فعلی و کلی را همان طور که قبلا بازیابی شد، تنظیم کنید
    با استفاده از pretty permalinks نتایج URL صفحات، چیزی شبیه به این خواهد بود:

    http://2011.rosselliot.co.nz/category/honda/page/2/

    فراخوانیget_pagenum_link (1) بخشی ازURL را بازیابی خواهد کرد:

    http://2011.rosselliot.co.nz/category/honda/

    پس از آن ما پارامتر فرمت را برای باقی مانده یURL ارائه خواهیم داد که این خواهد بود:
    page/2
    بخش ٪ #٪ فرمت شماره صفحه فعلی ما را در خود دارد.
    بر اساس این گونه تنظیمات پارامترها،paginate_links مجموعه ای از لینک های صفحه بندی را خروج خواهد داد. شما می توانید کد را به طور مستقیم به یک قالب فایل که کار صفحه بندی را انجام می دهد (مانندcategory.php ) وارد کنید و یا آن را در یک تابع به عنوان فایل functions.php خود ذخیره کنید و سپس آن را از هر قالبی که دوست دارید، فرابخوانید.
    paginate_link دارای پارامترهای دیگری هم هست که به شما اجازه می دهد تا به خروجی ها تناسب دهید که اعداد چگونه ظاهر شوند و برچسب ها چه چیزی را بازگو کنند. از مستندات کمک بگیرید. با کمی طراحی ظاهر، نمایش صفحه بندی موثر آسان خواهد بود. با استفاده از این کد اصلاح شده و یک ظاهر طراحی شده اضافه خواهد شد:

    ۱
    ۲
    ۳
    ۴
    ۵
    ۶
    ۷
    ۸
    ۹
    ۱۰
    ۱۱
    ۱۲
    ۱۳
    ۱۴
    ۱۵
    ۱۶
    ۱۷
    ۱۸
    ۱۹
    ۲۰
    ۲۱
    ۲۲
    global $wp_query;
    $total_pages = $wp_query->max_num_pages;
    if ($total_pages > 1){
      $current_page = max(1, get_query_var('paged'));
      
      echo '<div>';
      
      echo paginate_links(array(
          'base' => get_pagenum_link(1) . '%_%',
          'format' => '/page/%#%',
          'current' => $current_page,
          'total' => $total_pages,
          'prev_text' => 'Prev',
          'next_text' => 'Next'
        ));
      echo '</div>';
      
    }
    ۱
    ۲
    ۳
    ۴
    ۵
    ۶
    ۷
    ۸
    ۹
    ۱۰
    ۱۱
    ۱۲
    ۱۳
    ۱۴
    .page_nav .page-numbers{
      padding:4px 8px;
      margin:0px 4px;
      border:1px solid gray;
      color:#FFB134; 
    }
    .page_nav .current{
      border:1px solid #FFB134;
      background-color:#FBEFDB;
    }
    .page_nav .prev, .page_nav .next{
      border:none;
      color:blue;
    }

    تولید نتیجه ی زیر آسان بود:

    pagination custom صفحه بندی مطالب در وردپرس

    آرزو می کنم که شما از مباحث اولیه در صفحه بندی لذت برده باشسد. اگر هر گونه راهنمایی بیشتر در مورد صفحه بندی با وردپرس نیاز دارید، با نوشتن نظرات خود در زیر، به ما اجازه ی کمک دهید.

  • تازه های وردپرس رو از کانال تلگرام خانه وردپرس دنبال کنید