When cloning a Page Link field, it returns only the page ID, rather than the actual page url.
For example:
<?php
$button = get_field('header_button');
if($button): ?>
<a href="<?php echo $button['link']; ?>"><?php echo $button['label']; ?></a>
<?php endif; ?>
$button['link']
returns a numerical page ID rather than a url.
ACF V5.4.8
WP V4.6.1
Submit a new support ticket for this https://support.advancedcustomfields.com/forums/topic/page-link-fails-in-clone-field/. It’s the fastest way to get it to the developer.
This is definitely happening (and still happening – ACF V5.5.3, WP V4.7).
dkeeling – a workaround is to check if the value is numeric, and then run it through get_permalink() if it is.
Your code would look like this:
<?php
$button = get_field('header_button');
if($button): ?>
<a href="<?php echo ( is_numeric($button['link']) ? get_permalink($button['link']) : $button['link'] ); ?>"><?php echo $button['label']; ?></a>
<?php endif; ?>
Thanks @jimkrill. I thought maybe it was just me because I hadn’t heard much from anyone else about this. Your solution works great.
Because I didn’t want to go back and edit my code after this issue is fixed, I had switched to just using a Post Object field rather than a Page Link, using get_permalink()
with the ID, but I think your idea of using is_numeric()
is a better solution.