Cargar una barra lateral diferente en las páginas específicas en el marco de Génesis

El plugin Genesis Simple Sidebars permitirá incluir áreas de widgets barra lateral adicionales en los lugares de la barra lateral primaria o secundaria. Sin embargo, en ocasiones, es posible que desee utilizar una barra lateral completamente diferente en una o más de sus páginas.

Por ejemplo, uno de mis clientes querían una barra lateral diferente a aparecer en la página de blogs, archivos y páginas de entradas individuales.

Con el fin de hacer esto, usted necesitará:

  1. Registrar una nueva barra lateral en functions.php de su tema hijo
  2. Crear un nuevo archivo de la barra lateral para su tema hijo
  3. Agregar una función en functions.php a su tema hijo

Paso 1 – Registrar una nueva barra lateral en functions.php de su tema hijo

En este ejemplo, queremos sustituir la barra lateral de Primaria con una nueva barra lateral de Primaria en la página del blog, archivos y páginas de entradas individuales. Desde el “blog” y sus páginas relacionadas, nombraremos nuestra nueva área de widget de la barra lateral, “Blog Sidebar”.

// Registar nuevo sidebar
genesis_register_sidebar( array(
	'id' => 'blog-sidebar',
	'name' => 'Blog Sidebar',
	'description' => 'Esta es la barra lateral alternativa para el Blog.',
) );

El nombre de su barra lateral algo apropiado donde se ubicará su nueva barra lateral.

Paso 2 – Crear un nuevo archivo de la barra lateral

Crear un nuevo archivo dentro del directorio del tema hijo llamado “sidebar-blog.php” u otro nombre que tenga sentido para la que desea que aparezca. Pegue el siguiente código en el archivo, asegurándose de que el nombre de la barra lateral es el mismo que el que se registró en el Paso 1.

<div id="sidebar" class="sidebar widget-area">
<?php
	genesis_structural_wrap( 'sidebar' );
	do_action( 'genesis_before_sidebar_widget_area' );
	dynamic_sidebar('blog-sidebar');
	do_action( 'genesis_after_sidebar_widget_area' );
	genesis_structural_wrap( 'sidebar', 'close' );
?>
</div>

Nota: Puede tener cualquier número de archivos de sidebar-xxxxx.php, pero asegúrese de incluir el prefijo “sidebar-” en el nombre. Por ejemplo:

sidebar-page.php
sidebar-single.php
sidebar-home.php

Paso 3 – Agregar una función en functions.php del tema hijo

add_action( 'get_header', 'child_sidebar_logic' );
/**
 * Intercambiar, poner una barra lateral diferente en lugar de la barra lateral de forma predeterminada.
 *
 */
function child_sidebar_logic() {
	if ( is_page_template( 'page_blog.php' ) || is_archive() || is_single() ) {
		remove_action( 'genesis_after_content', 'genesis_get_sidebar' );
		add_action( 'genesis_after_content', 'child_get_blog_sidebar' );
	}
}

/**
 * Recuperar blog sidebar
 */
function child_get_blog_sidebar() {
	get_sidebar( 'blog' );
}

Explicación del código

Para romper un poco, la siguiente línea de código anterior condicionalmente ejecutará el código posterior en la plantilla de página de blog, páginas de archivo, y páginas de entradas individuales.
if ( is_page_template( ‘page_blog.php’ ) || is_archive() || is_single() ) {

Esta línea elimina la barra lateral estándar (Ver notas adicionales al final de este tutorial):
remove_action( ‘genesis_after_content’, ‘genesis_get_sidebar’ );

Esta línea añade su barra lateral personalizado:
add_action(‘genesis_after_content’, ‘child_get_blog_sidebar’);

Este código dice que la barra lateral para recuperar:

function child_get_blog_sidebar() {
get_sidebar( ‘blog’ );
}
Así pues, si usted designó a su nuevo archivo sidebar sidebar-page.php , el código se vería así:

function child_get_blog_sidebar() {
get_sidebar( ‘page’ );
}

Nota: los problemas más comunes, que tiene la gente, en conseguir que esto funcione es la elección de los condicionales u olvidarse de crear el archivo sidebar-xxxxx.php en el tema hijos.

CONSEJO ADICIONAL

Algunos temas incluyen barras laterales de fondo que es posible que desee quitar de debajo de su nueva barra lateral. Para sacarlos de debajo de su nueva barra lateral, pero dejarlos bajo la barra lateral original, utilice el siguiente código (generalmente se aplica a temas viejos de StudioPress):

</pre>
add_action( 'get_header', 'child_sidebar_logic' );
/**
* Remove Lifestyle bottom sidebars, and swap in a different sidebar instead of
* the default sidebar.
*
* @author Jennifer Baumann
* @link http://dreamwhisperdesigns.com/?p=1034
*/
function child_sidebar_logic() {
if ( is_page_template( 'page_blog.php' ) || is_archive() || is_single() ) {
remove_action('genesis_after_sidebar_widget_area', 'lifestyle_include_bottom_sidebars');
remove_action( 'genesis_after_content', 'genesis_get_sidebar' );
add_action( 'genesis_after_content', 'child_get_blog_sidebar' );
}
}

/**
* Retrieve blog sidebar
*/
function child_get_blog_sidebar() {
get_sidebar( 'blog' );
}
<pre>

También puede utilizar el mismo proceso para crear nuevas barras laterales inferiores para bajo su nueva barra lateral.