یک ترفند وردپرسی

  |

نمایش لیست غیرتکراری برچسب های مطالب یک مجموعه در وردپرس

وردپرس بی شک یکی از بهترین تولیدات نرم افزاری دنیای امروز است، نرم افزاری که به گفته مت ملنوگ خالق این شاهکار متن باز، با بیش از ۴۹ میلیون بار دانلود ۱۸.۹ درصد از کل وب را پشتیبانی می‌کند.
وردپرس مانند دیگر ابزارهای مشابه‌ خود روشی خاص برای استفاده دارد، روشی ساده و منحصر به فرد که وجه تمایز وردپرس از دیگر برنامه های مدیریت محتواست؛ در وردپرس تقریبا همه کاری از طریق حلقه‌های مشهور آن قابل انجام است، حلقه؛ کد ساده ای است که با استفاده از آن به مطالب نوشته شده در وردپرس دسترسی پیدا می‌کنیم و میتوانیم با فیلتر کردن و انتخاب موارد مورد نیاز، خروجی دلخواه از آن داشته باشیم و در صفحات و بخش های مختلف نمایش دهیم.

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

<?php 
	if ( have_posts() ) {
		while ( have_posts() ) {
			the_post(); 
			//
			// Post Content here
			//
		} // end while
	} // end if
?>

راه دیگر استفاده از حلقه‌های وردپرس برای داشتن کنترل بهتر استفاده از آبجکت Wp_Query با فرم استاندارد زیر است :

<?php

// The Query
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) {
        echo '<ul>';
	while ( $the_query->have_posts() ) {
		$the_query->the_post();
		echo '<li>' . get_the_title() . '</li>';
	}
        echo '</ul>';
} else {
	// no posts found
}
/* Restore original Post Data */
wp_reset_postdata();

خروجی این حلقه ها به راحتی فیلتر میشود تا فقط مطالب یک برچسب یا یک مجموعه خاص را نمایش داده سپس به راحتی موارد مورد نظر انتخاب میشوند تا اسم نویسنده، عنوان، متن، برچسب ها و … نمایش داده شوند، اما برای ساخت بعضی صفحات استفاده از این حلقه ها به این سادگی نیست!
در هنگام طراحی وب سایت اسب قرمز صفحاتی برای لیست پروژه‌ها، همکاران و … در نظر گرفتیم، برای تولید این صفحات، مطالب در مجموعه مورد نظر ثبت شده و بنا به ضرورت برچسب مورد نظر برای آن ثبت میشود اما گاهی مطالب برچسب های تکراری دارند.
به صفحه پروژه‌ها در وب سایت اسب قرمز نگاهی بیندازید، در این صفحه برچسب ها لیست شده اند و با کمی Jquery و Html5 مطالب مورد نظر را به شکل مناسبی نمایش می‌دهند، بعد از توضیحات بالا به این سوال میرسیم که راه حل لیست کردن غیرتکراری تگ های مطالب داخل یک مجموعه در وردپرس چیست؟
برای اینکار دو حلقه مجزا ایجاد کرد، در یک حلقه فقط برچسب ها و در حلقه دیگر مطالب را نمایش می‌دهیم.
برای ساخت حلقه اول با استفاده از تابع get_the_tags() برچسب های مطالب به دست می آیند، اما برچسب‌های تکراری هم زیاد میشوند، برای حل این مشکل در حلقه ای که ایجاد کردیم یک آرایه شامل نام برچسب، آدرس برچسب، شناسه برچسب ایجاد کرده که در حلقه بعدی قابل استفاده باشند و آرایه دیگری شامل شناسه های برچسب ها ایجاد میکنیم، در نهایت با استفاده از تابع array_unique موارد اضافی این آرایه را حذف میکنیم.

$args = array ('cat'=> ‘CATEGORY ID’,'posts_per_page'=> -1,'orderby'=> 'title');
$wp_query = new WP_Query( $args );
if ( $wp_query->have_posts() ) :
    while ( $wp_query->have_posts() ) : $wp_query->the_post();    
        $projecttags = get_the_tags();
		if ($projecttags) {
			foreach($projecttags as $tag) {
				$all_project_tag[$tag -> term_id]['name'] = $tag -> name;				
				$all_project_tag[$tag -> term_id]['slug'] = $tag -> slug;
				$all_project_tag[$tag -> term_id]['id'] = $tag -> term_id;
				$all_tags_arr[] = $tag -> term_id;
			}
		}
    	endwhile;
    endif; 
 wp_reset_postdata(); 
	$tags_arr = array_unique($all_tags_arr);

قسمت های مورد نیاز برای ساخت صفحه پروژه ها آماده شد! برای تولید این صفحه ابتدا باید لیست غیر تکراری برچسب ها را نمایش دهیم که این کار با داشتن دو آرایه که در کد بالا تولید کردیم به سادگی با یک حلقه PHP انجام می‌شود :

<ul>
	<li><a href="#" class="all">همه</a></li>		
	<?php foreach($tags_arr as $tag_atr) { ?> 
	<li>
		<a href="#" class="filter<?php echo $all_tags_arr_all[$tag_atr]['id'];  <?"><?php echo $all_tags_arr_all[$tag_atr]['name'] ; ?> </a>
	</li>
	<?php } ?>
</ul>

در نهایت در حلقه بعدی، لیست مطالب را نشان داده و شناسه برچسب را به عنوان یک مقدار به تگ HTML آن می‌دهیم تا جلوه بصری مورد نظر ایجاد شود.
با توجه به اینکه از این کد در چند صفحه باید استفاده شود، تابعی برای آن ساخته و در Fonctions.php قالب قرار داده تا در صفحات لازم به راحتی از آن استفاده کنیم.
در مطالب بعدی درباره سلسه مراتب قالب‌ها در وردپرس خواهیم نوشت، تا قبل از انتشار این مطالب می‌توانید با مراجعه به سایت وردپرس با سلسله مراتب قالب‌ها بیشتر آشنا شوید.
و در پایان، نظر شما در مورد مزایا و معایب این نوع استفاده از حلقه‌های وردپرس چیست؟ به نظر شما صفحه پروژه‌های سایت ما با چه نوع کدی می‌توانست این شکل کنونی را به خود بگیرد؟

یک ترفند وردپرسی
5 (100%) 1 رای

5 دیدگاه در “یک ترفند وردپرسی

    1. همه این توابع یک کار رو انجام میدن ولی استفاده از Wp_Query بهتر و ساده تره و بیشتر توضیه میشه.
      query_posts در نهایت برای اجرا Wp_Query رو اجرا میکنه و این کار سرعت سیستم رو میگیره و حافظه و پردازنده زیادی مصرف میکنه، همچنین چند بار درخواست به بانک اطلاعات میفرسته، به همین خاطر بهتره که برای همچین لوپ هایی ازش استفاده نشه.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *