رفتن به مطلب

مشکل در نمایش ندادن فیلد های acf در نوشته


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

سلام.  این قالب وبلاگ رو ببینید:

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

میخوام با افزونه ACF , چندفیلد متنی+ یک تصویر اضافه کنم . از توی افزونه , موضوع ها ساخته شده اما هر چی این کد رو داخل صفحه single.php میزارم عمل نمیکنه.میخوام باکس ACf که میسازمش, زیرهرپست وبلاگی به نمایش گذاشته بشه.

این کدهای صفحه single.php منه:

<?php defined( 'ABSPATH' ) OR die( 'This script cannot be accessed directly.' );

/**
 * The template for displaying all single posts
 *
 * Do not overload this file directly. Instead have a look at templates/single.php file in us-core plugin folder:
 * you should find all the needed hooks there.
 */


if ( function_exists( 'us_load_template' ) ) {

	us_load_template( 'templates/single' );

} else {
	get_header();
	?>

	<main id="page-content" class="l-main">
		<?php
		while ( have_posts() ) {
			the_post();

			get_template_part( 'content' );
		}
		?>

	</main>

<?php
	get_footer();
}
?>

کد زیر رو هرجای کدهای بالا میزارم بازم فیدهای acf به نمیش گذاشته نمیشه. لطفا راهنمایی کنید :

<div class="book-meta">
<ul>
<li><strong>Author:</strong> <?php the_field('author'); ?></li>
<li><strong>Release Year:</strong> <?php the_field('release_year'); ?></li>
<li><strong>Book Rating:</strong> <?php the_field('book_rating'); ?>/10</li>
</ul>
</div>
لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

درود؛

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

get_template_part( 'content' );

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

خب فایل content که تعریف شده رو پیدا کنید کدها رو باید اونجا قرار بدید. داخل فایل content دنبال کد the_content بگردید که مربوط به نمایش محتوای مطلب هست. زیر همین تابع باید کدهای ACF رو اضافه کنید.

در ضمن مکان قرار دهی کدهای ACF توی مکان نمایش اون هم تأثیر داره. یعنی اگر کدهای رو بالای تابع the_content قرار بدید، اطلاعات زمینه دلخواه قبل از توضیحات مطلب نمایش داده میشه. اگه بعدش قرار بدید، بعد از توضیحات نمایش داده میشه. 

مراقب تداخل DIV ها و کدهای HTML هم باشید که بین تگ های مناسب خودش قرار بدید تا هم حالت نمایش زمینه ها و هم نمایش سایر بخش های قالب بهم نخوره.

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

<?php defined( 'ABSPATH' ) OR die( 'This script cannot be accessed directly.' );

/**
 * Template part for displaying content
 */

if ( is_singular() ) {
	?>
	<section class="l-section"><div class="l-section-h i-cf">
	<?php
	the_title( '<h1 class="entry-title">', '</h1>' );
} else {
	?>
	<article <?php post_class(); ?>>
	<?php
	the_title( sprintf( '<h2 class="entry-title"><a href="https://go.20script.ir/index.php?url=%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h2>' );
}

// Display the content
the_content(); 

	
// Display post pagination
us_wp_link_pages( 1 );

// Display date
echo sprintf(
	'<time class="entry-date published updated" datetime="%1$s">%2$s</time>',
	esc_attr( get_the_date( DATE_W3C ) ),
	esc_html( get_the_date() )
);

// Display tags list, needed for Theme Check
the_tags();

// For posts loop
if ( is_singular() ) {
	?>
	</div></section>
		
	<?php
} else {
	?>
	</article>
	<?php
	
}



// Display the comments section
comments_template();

این همون content هست. این کدهای acf منه که ویرایش شده . لطفا زحمتشو میکشی و کد ها رو جایگذاری میکنی یاد بگیرم؟ چون هرجا میزارم بازم هیچی نشون نمیده!

<?php the_field('product_name_acf'); ?>
<?php the_field('product_price_acf'); ?>
<?php the_field('product_url_acf'); ?>
 

میخوام مثل یه باکس زیر هر پستم قرار بگیره

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

یک فایل داخل روت پوشه قالب (جایی که فایل style.css هست) به نام دقیقا acf-custom.php بسازید و کدهای زیر رو داخلش قرار بدید:

<div class="book-meta">
<ul>
<li><strong>Author:</strong> <?php the_field('author'); ?></li>
<li><strong>Release Year:</strong> <?php the_field('release_year'); ?></li>
<li><strong>Book Rating:</strong> <?php the_field('book_rating'); ?>/10</li>
</ul>

بعد کل کدهای زیر رو کپی کنید و جایگزین کدهای فعلی فایل content کنید:

<?php defined( 'ABSPATH' ) OR die( 'This script cannot be accessed directly.' );

/**
 * Template part for displaying content
 */

if ( is_singular() ) {
	?>
	<section class="l-section"><div class="l-section-h i-cf">
	<?php
	the_title( '<h1 class="entry-title">', '</h1>' );
} else {
	?>
	<article <?php post_class(); ?>>
	<?php
	the_title( sprintf( '<h2 class="entry-title"><a href="https://go.20script.ir/index.php?url=https://1go.ir/%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h2>' );
}

// Display the content
the_content(); 
get_template_part( 'acf', 'custom' );
	
// Display post pagination
us_wp_link_pages( 1 );

// Display date
echo sprintf(
	'<time class="entry-date published updated" datetime="%1$s">%2$s</time>',
	esc_attr( get_the_date( DATE_W3C ) ),
	esc_html( get_the_date() )
);

// Display tags list, needed for Theme Check
the_tags();

// For posts loop
if ( is_singular() ) {
	?>
	</div></section>
		
	<?php
} else {
	?>
	</article>
	<?php
	
}



// Display the comments section
comments_template();

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

بعد از اون تغییرات رو فقط از طریق فایل acf-custom.php اعمال کنید.

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

حل شد عزیز. اما الان چیزی که هست مثلا من یک فیلد به اسم "عکس کالا" در زیر هر نوشته با ACF ساختم. توی قسمت ویرایشگر نوشته که میخوام تنظیمات acfاشو انجام بدم, از فیلد عکس کالا فقط یک دونه هست و گزینه ی +افزودن رو نشون نمیده که بتونم چندتا از اون فیلد رو توی یک نوشته بسازم. چه کار باید کنم که گزینه ی افزودن داشته باشد تا چند نسخه از یک فیلد خاص acf در نوشته هام ایجاد کنم؟

 

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

فیلد آپلود فایل یا آپلود تصویر فقط یک تصویر برای یک فیلد میشه آپلود کرد.

شما می تونید هر تعداد که خواستید فیلد از نوع آپلود رسانه بسازید. ساده ترین حالتش اینه که بیاییم یه تعداد خاص مثلا 5 تا فیلد تصویر در نظر بگیریم موقع ارسال مطلب، و کدهای نمایش اونها رو داخل اون فایل acf-custom.php به صورت شرطی بنویسیم که اگه یک فیلد مقداری براش وارد نکرده باشیم یا فیلد تصویر اگه تصویری آپلود نشده باشه براش، کلا اون محدودش مخفی باشه و فقط وقتی نمایش داده بشه که یک تصویر برای اون فیلد آپلود شده باشه. 

مثلا:

<?php if(get_field('image_field_1')): ?>
	<img src="<?php the_field('image_field_1'); ?>" title="">
<?php endif; ?>

<?php if(get_field('image_field_2')): ?>
	<img src="<?php the_field('image_field_2'); ?>" title="">
<?php endif; ?>

<?php if(get_field('image_field_3')): ?>
	<img src="<?php the_field('image_field_3'); ?>" title="">
<?php endif; ?>

با فرض اینکه سه تا فیلد داریم که شناسه اونها image_field_1 و image_field_2 و image_field_3 هست می تونیم دستور شرطی بالا رو بنویسیم که تنها زمانی که برای فیلد مقداری وجود داشت، اون تصویر رو داخل سایت نمایش بده.

در پیشخوان موقع ساختن زمینه های دلخواه آپلود، می تونید از گزینه "شرط" برای فیلدهای 2 و 3 و ... تصاویر استفاده کنید که شرط رو به این صورت تعیین کنید که اگه فیلد تصویر دوم داخلش تصویر آپلود شد، فیلد سوم رو نمایش بده. برای مثال من دو تا فیلد ساختم، فیلد دوم رو میخوام درحالت عادی موقع افزودن نوشته مخفی کنم و تنها زمانی اون فیلد داخل پیشخوان > افزودن نوشته فعال بشه که فیلد قبلی یا شماره یک، مقداری داخلش وارد بشه.

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

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

 

یه راه دیگش هم استفاده از نوع زمینه Repeater هست. این قابلیت توی نسخه PRO افزونه ACF وجود داره و میشه بی نهایت داده برای یک زمینه دلخواه وارد کرد. اون قابلیت بیشتر به درد سایت های دانلودسنتر میخوره که تعداد پارت های لینک های دانلود نامشخص هستند. ممکنه 1 لینک دانلود باشه ممکنه 40 تا! برای اون ویژگی باید نسخه PRO افزونه ACF و کدهای مخصوص بهش رو استفاده کنید که یه مقدار سخت و زمانبر هست استفاده از زمینه دلخواه Repeater

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

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