رفتن به مطلب

مشکل ترجمه کد - توضیح دادن نوع کارایی کد


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

با سلام و وقت بخیر خدمت دوستان

ممنون میشم یکی کد زیر رو برام ترجمه کنه و بگه چیکار میکنه :

<?php
				$query = new WP_Query( array(
					'category__in' => 37
				) );
				if ( $query->have_posts() ) :
					while ( $query->have_posts() ) : $query->the_post();
						include get_template_directory() . '/parts/pst.php';
					endwhile;
				endif;
				?>

 

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

  • مدیر انجمن

درود؛

این کد خیلی ساده و تقریبا با حداقل تنظیمات برای نمایش دادن پست ها از یک دسته بندی به آی دی 37 هست که توی کد بالا تنظیم شده.

کار این کد اینه که میاد دسته بندی با آی دی 37 رو بررسی می کنه و هر چی پست داخل همین آی دی هست (نه زیرمجموعه های این دسته بندی) رو دریافت می کنه. بعد توسط دستور while میاد اون فایل parts/pst.php که در پوشه قالب هست رو برای تک تک پست هایی که دریافت کرده لحاظ می کنه. یعنی محتویات فایل parts/pst.php به نوعی هست که برای نمایش دادن و یا ساختار یک مطلب هست (شامل بلوک بندی مطلب، تصویر شاخص، نام و لینک مطلب و ...).

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

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

  • لینک ها تنها برای اعضای سایت قابل نمایش است.
  • Like 2
لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

بسیار ممنون

این کدرو کسی برام نوشته - عملکردش اینطور هستش که میاد مطالب دسته 37 رو در صفحه اصلی نشون نمیده - چطور اینطور میکنه دستور ؟ یعنی مطالب اون دسته رو در صفحه اصلی نشون نمیده

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

  • مدیر انجمن

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

برای مستثنی کردن یا مخفی کردن مطالب یک دسته بندی، شما باید بجای این پارامتر از category__not_in استفاده کنید. به این صورت:

<?php
	$query = new WP_Query( array(
		'category__not_in' => array( 37 )
	) );
	if ( $query->have_posts() ) :
	while ( $query->have_posts() ) : $query->the_post();
		include get_template_directory() . '/parts/pst.php';
	endwhile;
	endif;
?>

یا اینکه می تونید از روش منفی کردن دسته بندی استفاده کنید. این روش هم مثل روش قبل هست ولی روش قبلی استانداردتر هست. به این صورت:

<?php
	$query = new WP_Query( array(
		'cat' => '-37'
	) );
	if ( $query->have_posts() ) :
	while ( $query->have_posts() ) : $query->the_post();
		include get_template_directory() . '/parts/pst.php';
	endwhile;
	endif;
?>

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

  • Like 1
لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

  • Masih عنوان را به ​ترجمه کد - توضیح دادن نوع کارایی کد تغییر داد

با تشکر از پاسخ

آخه ما همچین کاری از کدنویس خواستیم

که دسته 37 هرچی توش منتشر میشه رو تو صفحه اصلی نشون نده و بفرسته تو صفحه دوم یا به نوعی آرشیو کنه

 

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

  • مدیر انجمن

متاسفانه اون کد صحیح نبود.

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

function talkina_exclude_category_home( $query ) {
	if ( $query->is_home ) {
	$query->set( 'cat', '-37' );
	}
	return $query;
	} 
add_filter( 'pre_get_posts', 'talkina_exclude_category_home' );

 

  • Like 1
لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

مهمان
این موضوع برای عدم ارسال قفل گردیده است.
×
×
  • اضافه کردن...