Skip to content
Advertisement

WordPress custom field outside of loop

I currently have a banner image on a site which is pulled in via the featured image. The code below that does this works:

if ( has_post_thumbnail() ) {
$thumb = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'full' );
$url = $thumb['0'];

I would like to change this to use a custom field instead via Advanced Custom Fields. I have made a custom field called banner_image with the type as image url. I cannot seem to get this working however. I have tried the following methods:

Method 1

$image = get_field('banner_image', $post->ID);
$url = $image['url'];

Method 2

$url = get_field('banner_image', $post->ID);

Method 3

$url = get_field('banner_image');

Full PHP Code:

<?php
// Must be inside a loop.

// This is the bit i cannot get working
if(is_post(991)){
global $wp_query;
$postid = $wp_query->post->ID;
$url = get_post_meta($postid, 'banner_image1', true);
//End the bit that doesn't work
} elseif ( has_post_thumbnail() ) {
$thumb = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'full' );
$url = $thumb['0'];
}
else {
$bg = array(
'http://domain.co.uk/wp-content/uploads/2014/07/image.jpg',
'http://domain.co.uk/wp-content/uploads/2014/07/image1.jpg',
'http://domain.co.uk/wp-content/uploads/2014/07/image2.jpg',
'http://domain.co.uk/wp-content/uploads/2014/07/image3.jpg',
'http://domain.co.uk/wp-content/uploads/2014/07/image4.jpg'
 ); // array of filenames

 $i = rand(0, count($bg)-1); // generate random number size of the array
  $url = "$bg[$i]"; // set variable equal to which random filename was chosen
 }
?>

Does anyone have a method for doing this, I am just getting a blank page on that particular post. Other posts work fine so it isn’t breaking the code after elseif?

Advertisement

Answer

If you are inside the loop, this works:

$image = get_field('banner_image');
<?php echo $image['url']; ?>
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement