زمینه دلخواه آبجکت یک نوشته ACF Post Object

زمینه دلخواه آبجکت یک نوشته ACF Post Object

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

زمینه دلخواه آبجکت یک نوشته برای انتخاب یک یا چند نوشته در هر مطلب به کار می رود، نوشته ها می تواند بر اساس دسته، برچسب یا نوع پست تایپ باشند. این زمینه از کتابخانه جاوا اسکریپت Select2 استفاده می کند که ویژگی هایی چون جستجو آژاکس میان گزینه را به میسر می کند.

قبل از هر چیز این آموزش نیازمند آشنایی با زمینه های دلخواه پیشرفته Advanced Custom Fields است. پیشنهاد می کنیم قبل از استفاده از این آموزش حتما مقاله آشنایی با افزونه ACF را مطالعه کنید.

تنظیمات زمینه دلخواه آبجکت یک نوشته ( Setting )

فیلتر با نوع نوشته ( Post Type )

نتایج قابل انتخاب در زمینه دلخواه آبجکت یک نوشته می تواند بر اساس یک یا چند یا تمامی پست تایپ ها باشد. در این قسمت شما می توانید انتخاب کنید که نتایج بر اساس کدام پست تایپ باشد. برای اینکه نتایج قابل انتخاب بر اساس تمامی پست تایپ ها باشند این قسمت را خالی بگذارید.

فیلتر با طبقه بندی ( Taxonomy )

این قسمت کاملا مشابه با تنظیمات بخش فیلتر با نوع نوشته بوده تنها تفاوت آن این است که در این بخش نوع طبقه بندی انتخاب می شود برای مثال دسته یا تگ یا هردو یا حتی تمامی طبقه بندی ها ( Taxonomy ).

آیا Null مجاز است؟ ( Allow Null )

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

آیا چندین مقدار انتخاب شوند؟ ( Multiple )

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

فرمت بازگشت ( Return Format )

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

تنظیمات زمینه دلخواه آبجکت یک نوشته ACF Post Object
تنظیمات زمینه دلخواه آبجکت یک نوشته ACF Post Object
زمینه دلخواه آبجکت یک نوشته ACF Post Object
زمینه دلخواه آبجکت یک نوشته ACF Post Object

نمایش زمینه دلخواه زمینه دلخواه آبجکت یک نوشته در قالب ( Template usage )

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

نمایش مطالب انتخاب شده ( Display Posts )

<?php
$featured_post = get_field('featured_post');
if( $featured_post ): ?>
    <h3><?php echo esc_html( $featured_post->post_title ); ?></h3>
<?php endif; ?>

نمایش مطالب انتخاب شده با setup_postdata()

این مثال نشان می دهد که چگونه می توان مقدار Post Object را به صورت حلقه و لیستی از پیوندهای قابل کلیک را نمایش داد. در اینجا ما از یک عملکرد ویژه به نام setup_postdata () برای استفاده از توابع قالب وردپرس استفاده می کنیم.

<?php
$featured_posts = get_field('featured_posts');
if( $featured_posts ): ?>
    <ul>
    <?php foreach( $featured_posts as $post ): 

        // Setup this post for WP functions (variable must be named $post).
        setup_postdata($post); ?>
        <li>
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
            <span>A custom field from this post: <?php the_field( 'field_name' ); ?></span>
        </li>
    <?php endforeach; ?>
    </ul>
    <?php 
    // Reset the global post object so that the rest of the page works correctly.
    wp_reset_postdata(); ?>
<?php endif; ?>

نمایش مطالب انتخاب شده بدون setup_postdata()

این مثال نشان می دهد که چگونه می توان مقدار Post Object را به صورت حلقه و لیستی از پیوندهای قابل کلیک را نمایش داد. در اینجا متغیر Global Post تغییر نمی کند ، بنابراین همه توابع مربوط به post برای مشخص کردن آبجکت به پارامتر دوم نیاز دارند.

<?php
$featured_posts = get_field('featured_posts');
if( $featured_posts ): ?>
    <ul>
    <?php foreach( $featured_posts as $featured_post ): 
        $permalink = get_permalink( $featured_post->ID );
        $title = get_the_title( $featured_post->ID );
        $custom_field = get_field( 'field_name', $featured_post->ID );
        ?>
        <li>
            <a href="<?php echo esc_url( $permalink ); ?>"><?php echo esc_html( $title ); ?></a>
            <span>A custom field from this post: <?php echo esc_html( $custom_field ); ?></span>
        </li>
    <?php endforeach; ?>
    </ul>
<?php endif; ?>

زمینه های افزونه Advanced Custom Fields