get php variable from functions php and echo it in theme template files

This may seem like a silly question but I cannot figure this out.

I’ve created a variable in my functions.php – and I’m trying to echo it in my template files.

Read More

I’m guessing it’s because of scope.

What’s the simpliest what to echo a variable or create a function to allow me to output this facebook ID in various template files.

This is what I’ve currently got in my functions.php…

$fb_app_id = '68366786876786';

And this is how I was trying to echo it…

<?php echo $fb_app_id; ?>

Any ideas would be hugely helpful, thanks you very much

Related posts

Leave a Reply

3 comments

  1. If you don’t have access to the value, it’s likely a scope issue. Make sure you globalize it first:

    <?php
    global $fb_app_id;
    echo $fb_app_id;
    ?>
    

    Alternatively

    I’m not a fan of global variables, so the alternative I recommend is using WordPress’ built-in filter mechanism. You add the filter in your functions.php file and apply it where needed.

    In functions.php:

    add_filter( 'fb_app_id', 'return_fb_app_id' );
    function return_fb_app_id( $arg = '' ) {
        return '68366786876786';
    }
    

    In your template files:

    echo apply_filters( 'fb_app_id', '' );
    

    Or use an action hook

    In functions.php

    add_action( 'fb_app_id', 'echo_fb_app_id' );
    function echo_fb_app_id() {
        echo '68366786876786';
    }
    

    In your template files:

    do_action( 'fb_app_id' );
    

    Whether you use an action hook or a filter is entirely up to you. I recommend a filter because it can return a value. This is far more flexible than just injecting echo calls in your template.

  2. I would use WordPress options in this case. You can set an option using either add_option() or update_option() (probably better for your case). You would use update_option('fb_app_id', '68366786876786'); somewhere in you’re functions.php file (the init hook function would probably be a good place).

    You could then show this option in your theme files using echo get_option('fb_app_id');

    The reason I would suggest this way, rather than using globals (ick) or action/filter hooks is that if you plan on releasing your theme to the public, it will be much easier to make fb_app_id an editable option in a theme options page.

  3. the easiest way would be to just create a callable function, you don’t really need a hook here

    function get_fb_app_id() {
        $fb_app_id = '68366786876786';
        return $fb_app_id;
    }
    

    and in the template:

    echo get_fb_app_id();