ווידג'ט ACF Relationship של dynamic.ooo

שדה ה- Relationship יוצא גרסה אטרקטיבית מאוד של ה- Post Object Field. עם שדה Relationship אתם יכולים לבחור מדפים, פוסטים ופוסטים בהתאמה אישית. השדה הזה הוא יעיל מאוד ועוזר כאשר רוצים ליצור קישור מורכב לדף אחר או אובייקט פוסט אחר.

ווידג'ט ACF Relationship מאפשר להציג אובייקטים הקשורים לפוסט (מרובים או יחידים)
שמוגדרים בשדה Relationship בדף העריכה של הפוסט, בעזרת custom presentation layout:

רשימת כותרות פשוטה עם קישור-

1. HTML חופשי עם Tokens
2. תבנית אלמנטור מותאמת אישית

לקבלת פתרון מלא יותר אתם יכולים להשתמש בנתונים דינמיים של פוסט קשור לבניית מבנה מורכב:

1. רשת
2. אקורדיון
3. כרטיסיות (אופקיות ואנכיות)
4. בחר

איך יוצרים שדה Relationship

שדה ה- Relationship מכיל אפשרויות להתאמה אישית של השדה שלך:

Post Type: אתם יכולים לסנן את האפשרויות על ידי בחירת סוגי פוסטים
Filter from Taxonomy: ניתן לסנן את האפשרויות אפילו עוד יותר על ידי בחירת טקסונומיות / קטגוריות ספציפיות
Maximum Posts: אתה יכול להגדיר את המספר המקסימלי של הפוסטים המותרים לבחירה. השאר שדה זה ריק או הגדר ל -1 לבחירות אינסופיות.

מסך עריכה

לופ בסיסי (עם setup_postdata)

דוגמה זו מראה כיצד לטעון את הפוסטים שנבחרו משדה יחסים ולהציג אותם ברשימה. דוגמה זו משתמשת בפונקציה שנקראת setup_postdata שתעקוף את אובייקט הפוסט $ הגלובלי ותאפשר לפונקציות כמו the_title לתרגט את הפוסט שנבחר. בעת שימוש בפונקציה זו, חשוב לאפס את הפוסט לאחר הלולאה שלך.
http://codex.wordpress.org/Template_Tags/get_posts#Reset_after_Postlists_with_offset

<?php

$posts = get_field('relationship_field_name');

if( $posts ): ?>
<ul>
<?php foreach( $posts as $post): // variable must be called $post (IMPORTANT) ?>
<?php setup_postdata($post); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<span>Custom field from $post: <?php the_field('author'); ?></span>
</li>
<?php endforeach; ?>
</ul>
<?php wp_reset_postdata(); // IMPORTANT – reset the $post object so the rest of the page works correctly ?>
<?php endif; ?>

לולאה בסיסית (ללא setup_postdata)

דוגמה זו מראה כיצד לטעון את הפוסטים שנבחרו משדה Relationship ולהציג אותם ברשימה. דוגמה זו אינה משתמשת בפונקציית setup_postdata שהוזכרו לעיל, במקום זאת, ה- $ post-> ID מועבר לפונקציות כדי למקד לפוסט שנבחר. שימו לב שחלק משמות הפונקציות משתנים כדי לאפשר את הפרמטר $ post_id כמו the_title () => get_the_title ().

<?php

$posts = get_field('relationship_field_name');

if( $posts ): ?>
<ul>
<?php foreach( $posts as $p ): // variable must NOT be called $post (IMPORTANT) ?>
<li>
<a href="<?php echo get_permalink( $p->ID ); ?>"><?php echo get_the_title( $p->ID ); ?></a>
<span>Custom field from $post: <?php the_field('author', $p->ID); ?></span>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

שימוש בטיעוני WP_Query

אפשר לטעון רק את מזהי הפוסט שנבחרו במקום את אובייקטי הפוסט. בדרך זו תוכל להשתמש במזהים המופיעים בתוך WP_Query ולציין ארגומנטים כגון posts_per_page, order and orderby. למידע נוסף על טיעוני WP_Query, קראו כאן:
http://codex.wordpress.org/Class_Reference/WP_Query#Parameters.

שימו לב שלפונקציית get_field יש שני פרמטרים שגויים. הפרמטר הראשון מיועד ל- $ post_id והוא לא רלוונטי, אך השני הוא להגיד ל- ACF לא לעצב את הערך, ולהחזיר רק את מה שיש ב- DB (מערך תעודות זהות)

<?php

// get only first 3 results
$ids = get_field('conference_talks', false, false);

$query = new WP_Query(array(
'post_type' => 'conferences',
'posts_per_page' => 3,
'post__in' => $ids,
'post_status' => 'any',
'orderby' => 'post__in',
));

?>

שאילתה הפוכה

אפשר לבצע שאילתה הפוכה על פוסט (הודעה A) כדי למצוא את כל הפוסטים (פוסט B, פוסט C) שבחרו בה (פוסט A). למידע נוסף על שאילתה הפוכה, באפשרותכם לקרוא הדרכה מעמיקה כאן: https://www.advancedcustomfields.com/resources/tutorials/querying-relationship-fields/

התאמה אישית

שדה ה- Relationship מכיל פילטרים המאפשרים התאמה אישית של הפוסטים המוצגים והטקסט המוצג עבור כל פוסט.

לצפייה בכל הווידג'טים של dynamic.ooo לחצו כאן

 

מצאתם את המאמר שימושי?
שתפו בקליק

שיתוף ב facebook
שיתוף ב whatsapp
שיתוף ב telegram

מאמרים נוספים

שאולי תאהבו