Por alguna razón cada vez que trato de poner una variable en get_header
en mi página personalizada.php en WordPress, no reconoce el valor y se restablece a los valores predeterminados.
Aquí está mi código:
$header_choice = of_get_option( 'headerstyle', 'default' );
get_header( $header_choice );
of_get_option es una función de Marco de opciones
Esto se debe a que estoy usando varios sitios y sería genial si los usuarios avanzados pudieran cambiar el encabezado ellos mismos por sitio sin tener que sumergirse en el código o preguntarnos a nosotros, los desarrolladores.
¿Cómo puedo usar una variable en get_header
entonces puedo asignar dinámicamente el valor?
te estás topando con un Alcance variable tema. WordPress incluye el encabezado a través de su propia función get_header()
y sus variables de plantilla no están disponibles. Es posible que encuentre otras personas que le recomienden simplemente usar include('header.php')
pero tu no quiero hacer eso tampoco. (get_header()
desencadena otras acciones específicas de WordPress y es importante mantenerlo).
Tienes un par de opciones, y una de ellas es mi preferencia.
En primer lugar, puede utilizar el global
palabra clave para elevar su variable al alcance global de la siguiente manera:
global $header_choice = of_get_option( 'headerstyle', 'default' );
get_header();
Después, en el interior header.php
accedería de nuevo usando la palabra clave global así:
// from inside header.php
global $header_choice;
if ($header_choice == 'some_option') {
// do some work
}
Pero esto contamina un poco el alcance global (y puede llegar a desorganizarse, especialmente si comienzas a usar globales en otras páginas y para otras cosas). Por lo tanto, también puede abarcar sus globales utilizando el $GLOBALS
matriz y anide todos los globales de su tema en su propia matriz “espaciada por nombres” de la siguiente manera:
En el interior functions.php
inicializa tu $GLOBALS
variable
// from inside functions.php
$GLOBALS['THEME_NAME'] = array();
En su archivo de plantilla, inicialice sus opciones de tema
$GLOBALS['THEME_NAME'] = array();
$GLOBALS['THEME_NAME']['header_choice'] = of_get_option( 'headerstyle', 'default' );
get_header();
En tus header.php
archivo se accede a él simplemente así:
// from inside header.php
if ($GLOBALS['THEME_NAME']['header_choice'] == 'some_option') {
// do some work
}