¿Cómo puedo capturar get_sidebar en una variable?

14 jul 2011, 16:10:23
Vistas: 14.1K
Votos: 6

Quiero obtener un sidebar y guardarlo en una variable,
Esto es imposible con la función get_sidebar ya que simplemente imprime el
sidebar, ¿existe otra función que pueda usar?

// Usar output buffering para capturar el sidebar en una variable
ob_start();
get_sidebar();
$sidebar_content = ob_get_clean();

// Ahora $sidebar_content contiene el HTML del sidebar
echo $sidebar_content; // Opcional: mostrar el contenido

También puedes crear una función personalizada:

function get_sidebar_as_string($name = null) {
    ob_start();
    get_sidebar($name);
    return ob_get_clean();
}

// Uso:
$sidebar = get_sidebar_as_string();
2
Comentarios

¿Qué quieres hacer con esta variable?

Chip Bennett Chip Bennett
14 jul 2011 16:12:19

Quiero añadir widgets desde un contenido de "página", así que estoy intentando reemplazar etiquetas como %SIDEBAR_3% por la barra lateral real, por lo que estoy usando str_replace pero necesito una función que devuelva algo

Asaf Asaf
14 jul 2011 16:18:41
Todas las respuestas a la pregunta 2
1
18

Probablemente necesites usar buffering de salida, si entiendo correctamente tu pregunta.

Prueba algo como esto:

ob_start();
dynamic_sidebar('sidebar-id');
$sidebar = ob_get_contents();
ob_end_clean();

Esto colocará la salida de la barra lateral en la variable $sidebar, que luego podrás procesar y devolver desde tu filtro en el contenido de la página.

14 jul 2011 19:34:18
Comentarios

¡funcionó para mí! ¡gracias! tuve que guardar toda la salida HTML del footer en un transient. ¡gracias!

Amit Amit
1 sept 2011 00:14:21
0

La función get_sidebar() es una función de tipo include, utilizada para incluir el archivo sidebar.php.

La función que creo que buscas es dynamic_sidebar() (Referencia del Codex), asumiendo que conoces el ID de la barra lateral dinámica que deseas utilizar.

14 jul 2011 16:26:54