How to set global variable in functions.php

I want to be able to echo the URL of the featured image of a post and after looking some on the web I found the following which works fine when I put it in a loop in my front page template.

<?php $thumbSmall = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'small' );
$urlSmall = $thumbSmall['0']; ?>

<?php echo $urlSmall; ?>

However, want to use variable $urlSmall in other places than in the front page template, and this is where my limited coding skills let me down. I tried to just copy paste

Read More
wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'small' );
$urlSmall = $thumbSmall['0'];

into my functions.php but that did not work. I need these variables to be globally recognized. What do I do here? write some kind of function?

Related posts

Leave a Reply

2 comments

  1. You can turn your snippet into a function that returns the post thumbnail URL of a post:

    function wpse81577_get_small_thumb_url( $post_id ) {
        $thumbSmall = wp_get_attachment_image_src( get_post_thumbnail_id( $post_id ), 'small' );
        return $thumbSmall['0'];
    }
    

    Usage, supplying the ID of a post:

    <?php echo wpse81577_get_small_thumb_url( 59 ); ?>
    
  2. Pure PHP question, really.

    global $urlSmall;
    $urlSmall = $thumbSmall['0'];
    

    If you declare the variable with the global keyword when you initialize it it will be available thereafter. You can imprort it, so to speak, with…

    global $urlSmall;
    var_dump($urlSmall);
    

    You can do the same thing by assigning key/values directly to the $GLOBALS array.

    $GLOBALS['urlSmall'] = $thumbSmall['0'];
    

    That seems to be the most direct answer to the question:

    I need these variables to be globally recognized. What do I do here?

    There may be better ways to handle the data though.