افزودن صفحه بندی به وردپرس بدون نصب افزونه

5 / 5. تعداد رای: 1

افزودن صفحه بندی به وردپرس
افزودن صفحه بندی به وردپرس

توسط سیستم مدیریت محتوای وردپرس و قالب و افزونه‌های مختلفی که در سایت در اختیار شما قرار می‌گیرند؛ شما می‌توانید امکانات مختلفی را به سایت خود اضافه کنید. در برخی موارد نیز این امکانات به‌وسیله کد نویسی قابل افزوده شدن به سایت است. شماره صفحات یکی از امکاناتی است که شما درصورتی‌که در سایت خود محتوای زیادی داشته باشید باید حتماً از آن استفاده کنید. برای افزودن صفحه بندی به وردپرس این مقاله آموزشی را ببینید.

به‌طور پیش‌فرض قالب وردپرس لینک صفحه‌بندی را از طریق افزودن لینک قدیمی‌ترین پست و جدیدترین پست در انتهای صفحه آرشیو وردپرس نمایش می‌دهد. بااین‌حال بیشتر سایت‌ها از صفحه‌بندی عددی مانند سایت میهن وردپرس استفاده می‌کنند. در این مقاله ما به شما نحوه‌ی افزودن صفحه‌بندی عددی به قالب وردپرس را آموزش می‌دهیم. در اینجا هدف قرار دادن قدیمی‌ترین و جدیدترین لینک صفحه‌بندی در انتهای صفحه آرشیو با حرکت راحت صفحات می‌باشد.

دو روش برای افزودن صفحه‌بندی عددی به قالب وردپرس وجود دارد. روش اول افزودن صفحه‌بندی عددی به‌صورت دستی و بدون استفاده از افزونه است و روش دوم استفاده از یک افزونه می‌باشد. ازآنجاکه این مقاله در دسته آموزش قرار می‌گیرد، ابتدا روش دستی را توضیح می‌دهیم. بعداً در مقاله دیگری افزونه‌ای را برای این کار به شما معرفی خواهیم کرد.

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

اهمیت افزودن شماره صفحات به وردپرس

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

از طرف دیگر کاربر امکان این را دارد که مطلب موردنظر خودش را با توجه به دسته‌بندی‌های صورت گرفته به‌راحتی پیدا کند و در سایت شما سردرگم نشود. این موضوع باعث می‌شود سئو سایت خود را بهبود دهید.

زمانی که شما با استفاده از قابلیت پیش‌فرض وردپرس این کار را انجام دهید تنها دو گزینه صفحه قبل و بعد به سایت شما اضافه می‌شود. اما با استفاده از این کد می‌توانید این قابلیت را در سطح بهتر و بالاتری انجام دهید. این کدها باعث می‌شود شما علاوه بر اینکه این دو گزینه را اضافه می‌کنید در بین آن‌ها اعداد شماره صفحات نیز قرار بگیرند.

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

افزودن صفحه بندی به وردپرس

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

برای انجام این کار نیز از فایل پرکاربرد فانکشن استفاده می‌کنیم. در ابتدا فایل پوسته را بازکرده و کد زیر را به آن functions.php اضافه کنید.


function mihanwp_numeric_posts_nav()
	{
	if (is_singular()) return;
	global $wp_query;
	/** Stop execution if there's only 1 page */
	if ($wp_query->max_num_pages <= 1) return;
	$paged = get_query_var('paged') ? absint(get_query_var('paged')) : 1;
	$max = intval($wp_query->max_num_pages);
	/** Add current page to the array */
	if ($paged >= 1) $links[] = $paged;
	/** Add the pages around the current page to the array */
	if ($paged >= 3)
		{
		$links[] = $paged - 1;
		$links[] = $paged - 2;
		}

	if (($paged + 2) <= $max)
		{
		$links[] = $paged + 2;
		$links[] = $paged + 1;
		}

	echo '<div class="navigation"><ul>' . "\n";
	/** Previous Post Link */
	if (get_previous_posts_link()) printf('<li>%s</li>' . "\n", get_previous_posts_link());
	/** Link to first page, plus ellipses if necessary */
	if (!in_array(1, $links))
		{
		$class = 1 == $paged ? ' class="active"' : '';
		printf('<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url(get_pagenum_link(1)) , '1');
		if (!in_array(2, $links)) echo '<li>…</li>';
		}

	/** Link to current page, plus 2 pages in either direction if necessary */
	sort($links);
	foreach((array)$links as $link)
		{
		$class = $paged == $link ? ' class="active"' : '';
		printf('<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url(get_pagenum_link($link)) , $link);
		}

	/** Link to last page, plus ellipses if necessary */
	if (!in_array($max, $links))
		{
		if (!in_array($max - 1, $links)) echo '<li>…</li>' . "\n";
		$class = $paged == $max ? ' class="active"' : '';
		printf('<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url(get_pagenum_link($max)) , $max);
		}

	/** Next Post Link */
	if (get_next_posts_link()) printf('<li>%s</li>' . "\n", get_next_posts_link());
	echo '</ul></div>' . "\n";
	}

این کد تعداد صفحات و یک لیست از لینک شماره را آماده می‌کند. برای افزودن کد به قالب باید برچسب زیر را به Index.php, Archive.php, Category.php و دیگر قالب‌های آرشیو صفحه اضافه کنید.

<?php mihanwp_numeric_posts_nav(); ?>

اکنون‌که صفحه‌بندی را لیست کرده‌ایم نیاز داریم لیست را استایل دهی کنیم. ما می‌خواهیم که لیست را در خط بلوک جایی‌‌که صفحه با رنگ‌های پس‌زمینه مختلف فعال‌شده ایجاد کنیم. برای انجام دادن آن کد زیر را به قالب فایل Style.css اضافه کنید:

.navigation li a,
.navigation li a:hover,
.navigation li.active a,
.navigation li.disabled {
 color: #fff;
 text-decoration:none;
}

.navigation li {
 display: inline;
}

.navigation li a,
.navigation li a:hover,
.navigation li.active a,
.navigation li.disabled {
 background-color: #6FB7E9;
 border-radius: 3px;
 cursor: pointer;
 padding: 12px;
 padding: 0.75rem;
}

.navigation li a:hover,
.navigation li.active a {
 background-color: #3C8DC5;
}

اکنون لیستی از صفحه‌بندی عددی در قالب داریم. در نظر داشته باشید که قبل از هر تغییری در فایل فانکشن حتماً یک نسخه پشتیبان از مطالب سایت خود تهیه کنید.

به همین راحتی! شماره بندی صفحات بدون نیاز به نصب افزونه به سایت شما اضافه شد.

موفق و پیروز باشید. 🙂

نکته خاصی هست که این مقاله رو تکمیل‌تر کنه؟

  1. U30189 ۱۱ فروردین ۱۴۰۰

    با سلام
    من این کدها رو وارد کردم متاسفانه شماره صفحات نشون داده نمیشه .
    از حلقه while استفاده کردم بدون query بقیه اجزا به درستی کار میکنن اما این مورد کار نمیکنه حتی از echo هم قبل از تابع استفاده کردم , درست نشد.ممنون میشم راهنمایی کنید…

  2. U31316 ۲۴ آذر ۱۳۹۹

    سلام . من دقیقا کد را وارد کردم و صفحه بندی ظاهر شد اما کار نمیکنه و وقتی بررووی صفحه بعدی کلیک میکنم دوباره همون صفحه نشون داده میشه ب جای اینکه بقیه ی پست ها را نشون بده. مشکل چیه ؟

  3. U31316 ۸ آبان ۱۳۹۹

    سلام. یک سوال داشتم. من سایتم را با بوت استرپ نوشتم و برای صفحه بندی از کد زیر استفاده کردم که Pagination خود بوت استرپ هست . اما سوال اینجاست نمیدونم چطور داینامیک اش کنم که با کلیک برروی هر المان به صفحه مورد نظر بره..ممنون میشم راهنمایی ام کنید.

    Previous
    1
    2
    3
    Next

  4. U27132 ۳ اردیبهشت ۱۳۹۹

    سلام
    تعداد پست هایی که در هر صفحه نشان داده می شود را چطور میتوان کنترل کرد؟
    مثلا مشخص کنیم که در هر صفحه به جای نمایش 10 پست 9 یا 12 پست نشان داده شود؟؟

  5. U9796 ۲۰ بهمن ۱۳۹۸

    سلام
    من یه پست تایپی درست کردم و در زیر پست های معمولی قرارش دادم و برای پست های معمولی قابلیت صفحه بندی ( pagination ) رو قرار دادم و کار میکنه

    و از همین لینک
    یه صفحه بندی جدید قرار دادم و برای پست تایپ هم گذاشتم ، مشکل اینجاست که هر دو صفحه بندی یکی شده…… یعنی موقعی که میزنیم صفحه بعد ، هم پست های معمولی میره صفحه بعد ، هم پست تایپ

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

    ممنون میشم کمکم کنید

    • U9796 ۲۲ بهمن ۱۳۹۸

      مشکل بنده حل شد ، مثل اینکه داخل فایل index.php نیمشه دوتا pagination رو قرار بدیم و من با درست کردن یه template page ، ادامه پست تایپ رو به صفحه بعد انتقال دادم.
      با تشکر

    • Reza Rad رضا راد ۲۳ بهمن ۱۳۹۸

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

  6. U9796 ۲۸ تیر ۱۳۹۸

    فقط یه سوال
    چجوری مشخص کنیم که بعد از چند پست… پست های بعدی به صفحه بعد بروند؟

  7. U9796 ۲۷ تیر ۱۳۹۸

    سلام ممنون بابت آموزش کد ها به خوبی کار میکنند ولی کد های استایل اصلا برای من کار نمی کنند
    در فایل هدر من از کد لینک استفاده می کنم
    لطفا کمک کنید
    با تشکر

  8. کاربر مهمان ۵ تیر ۱۳۹۸

    سلام ببخشید من همین کد رو توی برگه ها قرار دادم هم توی صفحه اصلی برای مطالب سایت.ولی وقتی دقیقا همون کد رو که داخل صفحه اصلی هست و کار میکنه رو در یکی از برگه های خودم قرار میدم کار نمیکنه.در ضمن من میخوام کل مطالب صفحه اصلیم در یکی از برگه هام نمایش داده بشه و نمایش داده میشه اما صفحه شمارش هر کاری میکنم نمیاد.

    • تیم پشتیبانی تیم پشتیبانی ۵ تیر ۱۳۹۸

      سلام در برگه ها معمولا مطالب با شورت کد نمایش داده می‌شوند. این کد باید در آرشیو نمایش داده شود.

  9. کاربر مهمان ۶ خرداد ۱۳۹۸

    سلام خسته نباشید من کدو استفاده کردم.اما روی هر صفحه کلیک میکنم میره ولی مطالب عوض نمیشن و همونن؟

  10. کاربر مهمان ۶ خرداد ۱۳۹۸

    سلام ببخشید این نام دکمه رو چطور تغییر بدم.
    زده برگه قبل و برگه پیش؟چطور میشه تغییرش داد؟

  11. کاربر مهمان ۲۹ خرداد ۱۳۹۷

    سلام من سایتم رو با ویژاول کامپوسر ساختم میخوام در زیر مطالب اصلی سایتم صفحه بندی رو قرار بدم. چه جوری باید این کارو انجام بدم. البته در حالت عادی بخش category و … صفحه بندی دارن ولی مشکلم با صفحه ساخته شده با ویژاول هستش. اگه جواب بدید ممنون میشم.