maraljoon

حلقه نمایش عنوان دسته های مادر و زیر دسته ها و محتوای هر زیر دسته

8 پست در این موضوع قرار دارد

سلام اساتید و دوستان محترم..

دنبال یه حلقه و یه روش میگردم که بتونم این مورد رو انجام بدم. تا یه جاهایی پیش رفتم ولی کامل نیست.

من 4 تا دسته دارم و هر کدوم از این دسته ها 1 الی 2 زیر دسته. و هر زیر دسته ممکنه چندتا پست داشته باشن.

روش نمایش به این شکله که ابتدا عنوان دسته مادر میاد و زیرش عنوان زیر دسته ها. و جلوی هر زیر دسته تایتل پست های مختص اون زیردسته.

در واقع با استفاده از این حلقه همه دسته ها و زیر دسته های موجود نمایش داده میشن.

و این حلقه مربوط به یک پست تایپ خاص به اسم BOX هست.

ممنون میشم تو ساختن این حلقه کمکم کنید.

تشکر

0

به اشتراک گذاری این پست


لینک به پست

سلام و درود

 

به شکل لیست ul و li تونستم تقریبا چیزی رو که مدنظره بدست بیارم.

 

ابتدا دو تا تابع زیر رو میذارید توی فایل functions.php

function mehran_get_cat_post_ids($taxonomy, $post_type, $posts_per_page, $term_id) {
	
	$query = new WP_Query(array(
		'post_type' => $post_type,
		'posts_per_page' => $posts_per_page,
		'fields' => 'ids',
		'tax_query' => array(
			array(
				'taxonomy' => $taxonomy,
				'terms' => $term_id
			)
		)
	));
	
	return $query->posts;
	
}

function mehran_get_parent_child_post($taxonomy = 'category', $post_type = 'post', $posts_per_page = 10) {
	
	$cats = get_categories(array(
		'taxonomy' => $taxonomy
	));

	$data = array();

	foreach($cats as $k => $v) {
		
		if($v->parent)
			$data[$v->parent][$v->term_id] = mehran_get_cat_post_ids($taxonomy, $post_type, $posts_per_page, $v->term_id);
		else
			$data[$v->term_id] = false;
		
	}
	
	return $data;
	
}

بعد مثلا جایی که میخواید باید اینجوری ازش استفاده کنید.

احتیاج به 3 به صورت تو در تو هست.

$data = mehran_get_parent_child_post();

echo "<ul dir='rtl'>";
foreach($data as $k => $v) {
	
	echo "<li>";
	echo get_cat_name($k);
	if(is_array($v)) {
		echo "<ul>";
			foreach($v as $cid => $pid) {
				
				echo "<li>";
				echo get_cat_name($cid);
				if(is_array($pid)) {
					echo "<ul>";
					foreach($pid as $p) {
						echo "<li>";
						echo get_the_title($p);
						echo "</li>";
					}
					echo "</ul>";
				}
				echo "</li>";
				
			}
		echo "</ul>";
	}
	echo "</li>";
	
}
echo "</ul>";

تابع mehran_get_parent_child_post سه تا ارگومان داره که هیچ کدومش اجباری نیست اولی تاکسونومی مورد نظر که به صورت پیشفرض category هست دومی پست ایپ مورد نظر که به صورت پیشفرض post هست سومی هم تعداد پست هایی که میخواد برای هر زیر دسته بزنه که به صورت پیشفرض 10 عدد هست.

 

موفق باشید

1

به اشتراک گذاری این پست


لینک به پست
در 1 ساعت قبل، mehran-b گفته است :

 

ممنونم عالی بود. دقیقا همون نتیجه ای که میخواستم رو تو خروجی داشت.

سپاسگزارم از اینکه وقت گذاشتید.

0

به اشتراک گذاری این پست


لینک به پست
در 3 دقیقه قبل، maraljoon گفته است :

ممنونم عالی بود. دقیقا همون نتیجه ای که میخواستم رو تو خروجی داشت.

خواهش میکنم

در 3 دقیقه قبل، maraljoon گفته است :

سپاسگزارم از اینکه وقت گذاشتید.

موفق باشید

0

به اشتراک گذاری این پست


لینک به پست
در 10 ساعت قبل، mehran-b گفته است :

function mehran_get_parent_child_post($taxonomy = 'category', $post_type = 'post'

سلام. ببخشید. برای اینکه پست تایپ خاص رو بهش بدیم فقط باید همین خط باید ویرایش بشه؟ بخش post type?

0

به اشتراک گذاری این پست


لینک به پست
در 4 دقیقه قبل، maraljoon گفته است :

سلام. ببخشید. برای اینکه پست تایپ خاص رو بهش بدیم فقط باید همین خط باید ویرایش بشه؟ بخش post type?

نه این خود تابع است اینو ویرایش نکن وقتی فراخوانیش کردی بهش یه مقدار جدید بده.

$data = mehran_get_parent_child_post('category', 'test', 5);

 

0

به اشتراک گذاری این پست


لینک به پست
در 11 دقیقه قبل، mehran-b گفته است :

نه این خود تابع است اینو ویرایش نکن وقتی فراخوانیش کردی بهش یه مقدار جدید بده.


$data = mehran_get_parent_child_post('category', 'test', 5);

 

عذر میخوام متوجه نشدم.B)

مقدار جدید رو به چی بدم؟

مثلا پست تایپم portfolio هست. توی قالب باید فراخونی بشه؟ به چه شکل؟ کد فانکشن رو تغییر ندم؟

0

به اشتراک گذاری این پست


لینک به پست
در 9 دقیقه قبل، maraljoon گفته است :

مقدار جدید رو به چی بدم؟

به تابعی مقدار میدن که فراخوانیش میکنند نه وقتی که میسازنش.

$data = mehran_get_parent_child_post('category', 'portfolio'); // اینجا فراخوانیش کردیم توی فایل فانکشنز قالب تعریفش کردیم

echo "<ul dir='rtl'>";
foreach($data as $k => $v) {
	
	echo "<li>";
	echo get_cat_name($k);
	if(is_array($v)) {
		echo "<ul>";
			foreach($v as $cid => $pid) {
				
				echo "<li>";
				echo get_cat_name($cid);
				if(is_array($pid)) {
					echo "<ul>";
					foreach($pid as $p) {
						echo "<li>";
						echo get_the_title($p);
						echo "</li>";
					}
					echo "</ul>";
				}
				echo "</li>";
				
			}
		echo "</ul>";
	}
	echo "</li>";
	
}
echo "</ul>";

 

1

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری