Home › Forums › General Issues › foreach loop page_link so displays multiple link items
Hi
RE: https://www.advancedcustomfields.com/resources/page-link/
I have managed to load and display a selected page link value:
<a href="<?php the_field('page_link'); ?>">Read this!</a>
However, i am unable to display multiple items:
<?php
// vars
$urls = get_field('urls');
// check
if( $urls ): ?>
<h3>Further reading</h3>
<ul>
<?php foreach( $urls as $url ): ?>
<li>
<a href="<?php echo $url ?>"><?php echo $url; ?></a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
My page is here http://www.sorce.co/jarbon/product/kbn-minis-4ply/, you can see the View 4ply link above the main image, this is the selected link.
Any idea why the loop code isn’t working?
Matt
What kind of field is it? Is this a post object or a relationship field? Something else?
Hi John
It’s a Relational page_link.
I set these up, or am hoping to, so can add links to other products.
I have noticed, though, that i am unable to set up a single link, not just multiple. I did think it was working, but just noticed it isn’t and just linking to itself, e.g. look at the Read this link under add to cart button here http://www.sorce.co/jarbon/product/kbn-minis-4ply/.
I am adding the code to this theme file content-single-product.php
A relationship field returns either an array of post IDs or an array of post objects rather than URLs. See the documentation for how to display values for these fields https://www.advancedcustomfields.com/resources/relationship/
I have added the first code snippet from this page https://www.advancedcustomfields.com/resources/relationship/:
<?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; ?>
I have added the code to content-single-product.php
However, no links are displaying.
Do you think it could be the $posts bit? i ask as the content type is product, it’s not a straight forward post content type.
If you’re using a relationship field I don’t see anything wrong with your code.
If you changed the field type, did you also go an change all of the values already saved to the existing field? If not the data in those fields will not be saved correctly. That’s the only thing I can think of that might cause it to not work.
The fields have always been Relational, it’s just the code that has changed, to suit Relational, as per your suggestion in above post, which i thank you for.
I did re set the fields and saved the post/page just to make sure but it made no difference.
thanks John 🙂
The topic ‘foreach loop page_link so displays multiple link items’ is closed to new replies.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Privacy Policy. If you continue to use this site, you consent to our use of cookies.