WordPress template files are included via functions, which places the scope of those included files within those functions. That’s why you have to declare it global twice. Here is an example you can try with 3 simple php files to illustrate this without using WordPress:
main.php
function include_file_1(){
include '1.php';
}
function include_file_2(){
include '2.php';
}
include_file_1();
include_file_2();
1.php
function tester(){
global $pol;
$pol="ok all fine and working";
}
2.php
tester();
echo $pol;
If you test this out, you will see you get nothing from echo $pol
, it’s not within scope. Now edit 2.php
to declare global $pol
first:
global $pol
tester();
echo $pol;
And now you get the expected results.