Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

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.

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


share|improve this question

closed as off topic by Chip Bennett, Milo, kaiser, Rarst Jul 15 '12 at 22:28

Questions on WordPress Development Stack Exchange are expected to relate to WordPress within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
Close-voted as off-topic. This is a programming/PHP question, not a WordPress question. –  Chip Bennett May 4 '12 at 15:53
    
Use global $your_var; echo $your_var; or echo $GLOBALS['your_var'];. –  kaiser May 4 '12 at 16:33
add comment

3 Answers

up vote 4 down vote accepted

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.

share|improve this answer
    
Thank you very much for explaining this - very helpful –  Joshc May 4 '12 at 16:38
add comment

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.

share|improve this answer
add comment

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();
share|improve this answer
    
A wrapper function to return a global var?? –  kaiser May 4 '12 at 16:33
    
no, i wouldn't set it to global, that's why i didn't add the global line. –  fischi May 5 '12 at 14:10
    
Ok. So why isn't it inside the function? Currently the function would just throw an Error: undefined (...). –  kaiser May 6 '12 at 15:09
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.