WordPress: incluir una variable en get_header no funciona

2 minutos de lectura

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?

avatar de usuario
Jared Cobb

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
}

  • Creo que debería ser $GLOBALS

    – Felipe I

    24 de agosto de 2018 a las 21:41

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad