رفتن به مطلب

مشکل زمینه های دلخواه


m1410

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

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

میخواستم در مورد زمینه های دلخواه یه توضیحی بدید

من با افزونه Acf مشکل ندارم و راحت کار میکنم اما زمانی مشکل هست که میخوام مثلاً در کدهای قالب یه تیکه متن تعریف کنم و شرط بزارم در صورتی که زمینه دلخواه ACF فعال بود و به نوعی محتوا داشت تو هم نمایش داده شو در غیر این صورت مخفی باش

اینو سر در نمیارم چون شرطه

و اینکه من در یک بخش 4 زمینه تعریف کردم - 2 تاش نمایشش اکی هست اما 2 تا دیگه نه و به نوعی فاصله داره - مشکل از چی هستش ؟

تصاویر :

با تشکر

لینک ها تنها برای اعضای سایت قابل نمایش است.

لینک ها تنها برای اعضای سایت قابل نمایش است.

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

  • مدیر انجمن

درود؛

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

برای مثال توی تصویر دوم که دادید یکی از زمینه های دلخواهتون Number-of-sessions هست که می تونید بجای تابع فراخوانی اون، اینو استفاده کنید:

<?php if( get_field( "Number-of-sessions" ) ): ?>
	<?php the_field( "Number-of-sessions" ); ?>
<?php endif; ?>

 

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

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

بسیار ممنون از پاسخ

در بحث شرطی کردن - الان اونجایی که if استفاده شده میتونم یه تگ p استفاده کنم و یه متن در نظر بگیرم و در صورتی که زمینه دلخواه محتوا داشت اون متن نمایش داده بشه در غیر اینصورت مخفی باشه ؟

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

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

از دستور line-height استفاده کردم با مقدار 0 اما اکی نشد

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

  • مدیر انجمن
در 3 دقیقه قبل، m1410 گفته است :

در بحث شرطی کردن - الان اونجایی که if استفاده شده میتونم یه تگ p استفاده کنم و یه متن در نظر بگیرم و در صورتی که زمینه دلخواه محتوا داشت اون متن نمایش داده بشه در غیر اینصورت مخفی باشه ؟

 

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

<?php if( get_field( "Number-of-sessions" ) ): ?>
	<p>محتوا یا کد دلخواه خود را بجای این بنویسید</p>
<?php endif; ?>

یا یک تگ p به همراه محتوای خوده زمینه دلخواه:

<?php if( get_field( "Number-of-sessions" ) ): ?>
	<p>این یک متن ثابت است به همراه محتوای زمینه دلخواه: <?php the_field( "Number-of-sessions" ); ?></p>
<?php endif; ?>

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

 

در 7 دقیقه قبل، m1410 گفته است :

از دستور line-height استفاده کردم با مقدار 0 اما اکی نشد

برای این مشکل، شما باید از تگ های مشابه استفاده کنید. در تصویر سمت چپ که ارتفاع بیشتر شده، احتمال میدم اون زمینه های دلخواه با تگ p نمایش داده شدن. چون تگ p بطور پیش فرض دستور استایل margin-bottom داره و باعث میشه پایین متن فاصله بیفته. باید بخش زمینه های دلخواه رو با یک تگ پیاده سازی کنید و با استفاده از دستور استایل height یا padding فاصله ها و ارتفاع بخش ها رو ثابت کنید تا در هر حالت یک اندازه واحد و مشخصی داشته باشند. 

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

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

بسیار ممنون

یه سوال دیگه - میخوام تاپیک جدید الکی ایجاد نکنم

در سایت زیر میخوام در بخش ورود رمز عبور رو حذف کنم - کلاس یا آی دی شو پیدا نمیکنم که display رو none کنم راه حلی هست ؟

لینک ها تنها برای اعضای سایت قابل نمایش است.

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

  • مدیر انجمن

مگه برای ورود به حساب رمزعبور نباید وارد کنند کاربرا؟! کلس فیلد رمزعبور form-row-password هست به هر حال.

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

ممنون از پاسخ

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

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

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

یک سوال :

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

با تشکر

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

  • مدیر انجمن

درود؛

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

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

<?php if (in_category('movie')): ?>
	<p>این متن تنها زمانی که دسته بندی فیلم انتخاب شده باشد نمایش داده خواهد شد</p>
<?php endif; ?>

توی مثال بالا فرض کردیم نامک دسته بندی ما movie هست.

و اگه دسته بندی هاتون فارسی هستند، می تونید آی دی دسته بندی رو هدف قرار بدید:

<?php if (in_category(22)): ?>
	<p>این متن تنها زمانی که دسته بندی با آی دی 22 انتخاب شده باشد نمایش داده خواهد شد</p>
<?php endif; ?>

 

و اگه برای Taxonomy های دیگه مثل محصولات ووکامرس که به عنوان products شناسایی میشن یا افزونه های دیگه مثل EDD و ... نیاز به دستور شرطی دارید، می تونید از تابع has_term استفاده کنید. در افزونه EDD می تونید از download_category استفاده کنید مثل این:

<?php if  (has_term('mobile', 'download_category')): ?>
	<p>این متن تنها زمانی که دسته بندی محصول موبایل انتخاب شده باشد نمایش داده خواهد شد</p>
<?php endif; ?>

در کد بالا دسته بندی محصولات دانلودی رو mobile تنظیم کردیم.

و در ووکامرس می تونید با این کد دسته بندی خاصی رو تعریف کنید:

<?php if  ( has_term( 4, 'product_cat' ) ): ?>
	<p>این متن تنها در دسته بندی به آی دی 4 ووکامرس نمایش داده خواهد شد</p>
<?php endif; ?>

در کد بالا فرض شده دسته بندی محصولات ووکامرس ما باید آی دی 4 باشه.

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

بسیار ممنون از پاسخ

اگر بخوام چند دسته محصول رو در نظر بگیرم باید با , از هم جدا بشن آی دی ها ؟

اگر بخوایم بگیم فلان چیز رو اگر دسته x علامت خورد نمایش نده باید چه کنیم ؟ کلاس براش در نظر بگیریم ؟ که display رو none کنه ؟

سوال خارج از این مطلب :

چطور باید تگ i رو دو کلاسه کرد ؟

<i class="fal fa-spinner"></i>

میدونم باید کلاس رو بنویسم و دو نام تعریف شده رو پشت هم با فاصله بزنم مثله class="class1 class2" اما تو این قطعه کد جواب نمیده

راه حل چی هستش ؟

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

  • مدیر انجمن
در 27 دقیقه قبل، m1410 گفته است :

اگر بخوام چند دسته محصول رو در نظر بگیرم باید با , از هم جدا بشن آی دی ها ؟

 

باید قسمت آی دی یا نامک رو به صورت array بنویسید. مثال:

<?php if  ( has_term( array( 'mobile', 'pc' ), 'product_cat')): ?>
	<p>این متن تنها زمانی که دسته بندی محصول موبایل و پی سی انتخاب شده باشد نمایش داده خواهد شد</p>
<?php endif; ?>

 

در 32 دقیقه قبل، m1410 گفته است :

اگر بخوایم بگیم فلان چیز رو اگر دسته x علامت خورد نمایش نده باید چه کنیم ؟ کلاس براش در نظر بگیریم ؟ که display رو none کنه ؟

 

اگه فقط یه شرط برای یک دسته بندی می خواهید تنظیم کنید که قراره فقط توی یک دسته بندی مخفی بشه، می تونید از شرط منفی استفاده کنید. برای تبدیل دستور شرطی به شرط عادی، کنار تابع شرط یک علامت تعجب قرار میدیم که شرط معکوس بشه.یعنی همین کد قبلی که دادم کاربردی اینه که اون تگ p رو فقط در دسته های mobile و pc نشون میده. حالا فرض کنید بخواهید کاری کنیم که اون تگ P در تمامی دسته بندی ها نمایش داده بشه و در دسته های mobile و pc مخفی باشه باید اینطوری وارد کنید:

<?php if  ( !has_term( array( 'mobile', 'pc' ), 'product_cat')): ?>
	<p>این متن تنها زمانی که دسته بندی محصول موبایل و پی سی انتخاب شده باشد نمایش داده نخواهد شد</p>
<?php endif; ?>

اگه برای مخفی کردن یک قسمت نمی تونید به راحتی از دستور شرطی استفاده کنید، می تونید برای مخفی کردن یک بخش توسط استایل و CSS، بیایید نام دسته بندی رو توی المنت اصلی اون بخش مورد نظر، به صورت یک کلس یا آی دی اضافه کنیم. برای مثال در کد زیر، نام دسته بندی انتخاب شده محصول فعلی داخل بخش class وارد میشه و شما می تونید با استفاده از CSS استایل های مختلفی به اون المنت بدید:

<div class="<?php single_cat_title(); ?>">
  <p>Test</p>
</div>

 

در 40 دقیقه قبل، m1410 گفته است :

چطور باید تگ i رو دو کلاسه کرد ؟

<i class="fal fa-spinner"></i>

برای این مشکل خودتون در ادامه راه حل رو گفتید! یعنی فقط کافیه هر تعداد کلس که می خواهید رو با فاصله وارد کنید. فرقی نداره چند تا کلس وارد کنید. و در ضمن لزومی هم نداره که کلس های جدید مشابه باشند یعنی class1 و class2 و ... نیازی نیست. می تونید به این صورت کلس هاتون رو اضافه کنید و با عناوین و حالت های مختلف:

<i class="script icon fa fas fa-global blue masih"></i>

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

 

و لطفا برای سوالات متفاوت خودتون تاپیک جدید ایجاد کنید. توی یک تاپیک نپرسید

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

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

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

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

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

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

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

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

ورود به حساب کاربری
×
×
  • اضافه کردن...