0

I have defined a global variable in one of my template files page.php. I can access the global variables in my loop. But when the loop displays an individual post in single.php, the variable has no value. I defined the variable as global in my single.php.

What am I doing wrong?

0

Define it in functions.php, which is loaded on every request.

However, there are far better options than a global variable:

  • a function
  • a template part if it's a template you're defining
  • filters
  • I did define it in functions and I'm still not getting it. – LindaH53 Sep 10 '17 at 20:04
  • @LindaH53 I'd strongly recommend against global variables, but remember that you have to tell PHP in a file that the variable is global, e.g. global $variable;, and if you don't PHP won't use the global variable. – Tom J Nowell Sep 10 '17 at 21:01
  • OK, thanks. I am putting it into a function. What's the reason for discouraging global variables? Thanks. – LindaH53 Sep 10 '17 at 21:13
  • 2
    global state is an anti-pattern, and with global variables it's easy to accidentally overwrite other global variables from other code, or forget the global keyword. It also makes writing unit tests near impossible as the global variables provide hidden state the tests can't control – Tom J Nowell Sep 10 '17 at 22:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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