رفتن به مطلب

مشکل لینک کردن دسته مادر


mehrdadj

پست های پیشنهاد شده

باسلام

دوستان من می خوام وقتی به ادامه مطلب یک دسته حالا زیر دسته باشه یا مادر میرم جدیدترین مطالب همون دسته برام نمایش داده بشه حالا تا اینجا اوکی هست:

 

<?php

$wp= new WP_Query(array(
'post_type' => 'post',
'post_status' => 'publish',
'category__in' => wp_get_post_categories( $post->ID ), 
'order' => 'DESC',
'orderby' => 'id',
'posts_per_page' =>'1',
'showposts' => '1',
)); 
?>


<li>مطلب</li>

<?php endwhile;endif ;wp_reset_query();?>

من از Id دسته خودمو با :

'category__in' => wp_get_post_categories( $post->ID ), 

می گیرم. و مطالب نشون داده میشن، حالا می خوام دسته مادر لینک کنم، یعنی به عبارتی یه دکمه باشه "مشاهده آرشیو" وقتی کاربر کلیک کرد بره دسته اصلی همون مطلب.

الان من با :

<?php echo get_category_link(); ?>

لینک میدم ولی لینک میشه به خود مطلب که همون ادامه مطلب من هست.

ممنون میشم کمکم کنید این کد تکمیل کنم.

لینک به ارسال

سلام

 

<?php

$wp= new WP_Query(array(
'post_type' => 'post',
'post_status' => 'publish',
'category__in' => wp_get_post_categories( $post->ID ), 
'order' => 'DESC',
'orderby' => 'id',
'posts_per_page' =>'1',
'showposts' => '1',
)); 
?>


<li>مطلب</li>

<?php endwhile;endif ;wp_reset_query();?>

از کد بالا برای ساخت حلقه category.php استفاده میکنید؟

لینک به ارسال

سلام

ممنون از پاسخ شما

 

من ادامه مطلب یا همون single.php که هست می خوام وقتی کاربری  وارد ادامه مطلب دسته ای شد آخرین مطالب همون دسته بالا نشون داده بشه یعنی قبل حلقه پست،

<?php

$wp= new WP_Query(array(
'post_type' => 'post',
'post_status' => 'publish',
'category__in' => wp_get_post_categories( $post->ID ), 
'order' => 'DESC',
'orderby' => 'id',
'posts_per_page' =>'5',
'showposts' => '5',
)); 
?>


<li>مطلب</li>

<?php endwhile;endif ;wp_reset_query();?>

<a href="<?php echo get_category_link(); ?>">مشاهده همه</a>

من از این کد استفاده می کنم برای نمایش توی single.php نشون هم میده یعنی بالا اخرین مطالب دسته همون مطلب نشون میده پائین هم که خود مطلب هست بدون مشکل، فقط مشکل اینجاست نمی تونم توی حلقه اول به دسته مادر لینک بدم یعنی کاربر 5 تا اخرین مطلب دسته ای که توی ادامه مطلبش هست می بینه یه دکمه باشه که بره به category.php همون دسته که اخرین هاشو نشون میده.

الان مشکل فقط لینک به این کد هست:

<a href="<?php echo get_category_link(); ?>">مشاهده همه</a>

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

لینک به ارسال
در 10 دقیقه قبل، mehrdadj گفته است :

توی یک فایل هستن ولی خارج حلقه ادامه مطلب هست، در واقع من الان دوتا حلقه دارم.

خوب پس اگر خارج از حلقه اصلی single.php هست متغییر سراسری $post اصلا اینجا تعریف نشده که شما به عنوان خوارک دادید به تابع wp_get_post_categories.

حلقه مورد نظر به این شکل باید باشه:

<?php
$wp = new WP_Query(array(
'post_type' => 'post',
'post_status' => 'publish',
'category__in' => wp_get_post_categories(get_queried_object_id()),
'posts_per_page' => 5
));
if($wp->have_posts()) :
while($wp->have_posts()) :
$wp->the_post();
?>


<li>مطلب</li>

<?php
endwhile;
wp_reset_postdata();
endif;
?>

خوب حالا میرسیم به این کد

<a href="<?php echo get_category_link(); ?>">مشاهده همه</a>

اگر مطلب چند تا دسته داشت به کدوم دسته باید لینک بده؟

ویرایش شده توسط mehran-b
لینک به ارسال
در 8 دقیقه قبل، mehrdadj گفته است :

بی نهایت ممنون دوست عزیز من.

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

خوب برای پیدا کردن دسته مادر این کد رو به فایل functions.php قالبتون زیر اولین

<?php

اضافه میکنید.

function mehran_parent_category_link($post_id) {
	$cats = get_the_category($post_id);

	foreach($cats as $cat) {
		if($cat->parent === 0)
			$parent_ids[] = $cat->term_id;
	}

	$parent = max($parent_ids);

	return esc_url(get_category_link($parent));
}

سپس اونجایی که میخواید لینک دسته مادر رو بگیرید اگر توی حلقه اصلی single.php بود از این کد

<a href="<?php echo mehran_parent_category_link($post->ID); ?>">مشاهده همه</a>

و اگر هم خارج از حلقه اصلی single.php بود از این کد

<a href="<?php echo mehran_parent_category_link(get_queried_object_id()); ?>">مشاهده همه</a>

دریافت میکنید.

 

موفق باشید

لینک به ارسال

سلام

 

آقا مهران عزیز من یه مشکل دیگه ای هم دارم

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

 

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

 

 

<?php
$wp = new WP_Query(array(
'post_type' => 'post',
'post_status' => 'publish',
'category__in' => wp_get_post_categories(get_queried_object_id()),
'posts_per_page' => 5
));
if($wp->have_posts()) :
while($wp->have_posts()) :
$wp->the_post();
?>


<li>مطلب</li>

<?php
endwhile;
wp_reset_postdata();
endif;
?>

 

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

 

 

لینک به ارسال

بله چرا که نشه حتما میشه.

برای اینکار در اصل باید لوپ تو لوپ کنید.

<?php
$childs = get_term_children(get_queried_object_id(), 'category');
foreach($childs as $child) :
	$wp = new WP_Query(array(
		'post_type' => 'post',
		'post_status' => 'publish',
		'category__in' => $child->term_id,
		'posts_per_page' => 5
	));
	if($wp->have_posts()) :
		while($wp->have_posts()) :
			$wp->the_post();
?>


<li>مطلب</li>

<?php
		endwhile;
		wp_reset_postdata();
	endif;
endforeach;
?>

کد بالا رو تست کنید ببینید جواب میگیرید یا خیر.

لینک به ارسال

نه متاسفانه این جواب نداد توی لود موند و کوئری اجرا نشد.

اقای مهران عزیز من برای هر دسته مادر یه قالب درست کردم یعنی ای دی هارو به صورت دستی میزنم، ولی دسته مادر با کدی که دیشب بهم دادین میره به آرشیو مطالب کامل ولی زیر دسته لینک نمیشه.

 

دسته مادر من id 2 داره و یه category-2.php ساختم، الان دوتا کوئری دارم اولی دسته مادر هست دومی زیر دسته مادر که id 1262 داره حالا دسته اول بدون مشکل لینک میشه به ارشیو کامل نوشته ها ولی زیر دسته لینک نمیشه!

 

<?php
$wp = new WP_Query(array(
'post_type' => 'post',
'post_status' => 'publish',
'cat' => 2 ,
'posts_per_page' => 5
));
if($wp->have_posts()) :
while($wp->have_posts()) :
$wp->the_post();
?>


<li>مطلب</li>

<?php
endwhile;
wp_reset_postdata();
endif;
?>

<a href="<?php echo mehran_parent_category_link($post->ID); ?>">مشاهده همه</a>


<?php
$wp = new WP_Query(array(
'post_type' => 'post',
'post_status' => 'publish',
'cat' => 1262 ,
'posts_per_page' => 5
));
if($wp->have_posts()) :
while($wp->have_posts()) :
$wp->the_post();
?>


<li>مطلب</li>

<?php
endwhile;
wp_reset_postdata();
endif;
?>

<a href="<?php echo mehran_parent_category_link($post->ID); ?>">مشاهده همه</a>

و یک سئوال من چجوری می تونم این کوئری رو یک بار بنویسم و برای چندین باکس در یک صفحه استفاده کنم؟

چون توی یک دسته مادر کم کم 10 تا زیر دسته هست باید برای همه زیر دسته ها همین کد تکرار کنم و فقط ایدی رو عوض کنم.

لینک به ارسال
نقل قول

نه متاسفانه این جواب نداد توی لود موند و کوئری اجرا نشد.

حالا باید فکر بشه روی کده تا ببینیم مشکلش چیه.

 

در مورد اون کوئری ها شما قرار بود کوئری ها رو توی single.php استفاده کنی الان داری توی category.php استفاده میکنی؟

 

نقل قول

و یک سئوال من چجوری می تونم این کوئری رو یک بار بنویسم و برای چندین باکس در یک صفحه استفاده کنم؟

کوئری رو بذار توی یه تابع به آرگومان تابع هم آیدی دسته رو ارسال کن.

function mehran_cat_query($cat_id) {
	$wp = new WP_Query(array(
		'post_type' => 'post',
		'post_status' => 'publish',
		'cat' => $cat_id,
		'posts_per_page' => 5
	));
	if($wp->have_posts()) :
		while($wp->have_posts()) :
			$wp->the_post();
?>

<li>مطلب</li>

<?php
		endwhile;
		wp_reset_postdata();
	endif;
}

کد بالا رو میذاری توی functions.php بعد هر جا خواستی حلقه رو نمایش بدی آیدی دسته رو میفرستی به حلقه و حلقه برات نمایش داده میشه:

<?php mehran_cat_query(2); ?>

مثلا توی مثال بالا مطالب دسته ای که آیدی 2 هست رو نشون میده.

ویرایش شده توسط mehran-b
لینک به ارسال
در 2 دقیقه قبل، mehran-b گفته است :

در مورد اون کوئری ها شما قرار بود کوئری ها رو توی single.php استفاده کنی الان داری توی category.php استفاده میکنی؟

اره اولی جواب داد دومی نداد.

در 3 دقیقه قبل، mehran-b گفته است :

کوئری رو بذار توی یه تابع به آرگومان تابع هم آیدی دسته رو ارسال کن.

عالیه!!!!! دستت درد نکنه

لینک به ارسال
نقل قول

اره اولی جواب داد دومی نداد.

دومی توی category.php اینطوری میشه:

<a href="<?php echo esc_url(get_category_link(get_queried_object_id())); ?>">مشاهده همه</a>

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

لینک به ارسال

اقا مهران عزیز این چند روز خیلی زحمت دادم ولی می خوام سایتم به این شکل نمایش داده بشه:

 

https://www.tasvirezendegi.com/news/

 

الان news دسته مادر هست میریم داخلش زیردسته ها همراه با اخرین ارسال های همون دسته نشون داده میشه خود این سایتم وردپرس هست.

لینک به ارسال

سلام

 

خوب شما کد زیر رو تست کن ببین وضعیت چطوره؟

<?php
$cat_obj = get_queried_object();
if($cat_obj->category_parent === 0) {
	$childs_id = get_term_children($cat_obj->cat_ID, 'category');
	if($childs_id !== array()) {
		foreach($childs_id as $child_id) {
			$wp = new WP_Query(array(
				'post_type' => 'post',
				'post_status' => 'publish',
				'category__in' => $child_id,
				'posts_per_page' => 5
			));
			if($wp->have_posts()) :
				while($wp->have_posts()) :
					$wp->the_post();
?>


<li>مطلب</li>

<?php
				endwhile;
				wp_reset_postdata();
			endif;
		}
	}
}
?>

کد بالا واسه اینه که توی دسته مادر دسته های فرزند رو هر کدوم رو براشون یه لوپ بسازه.

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...