(WooCommerce) Eliminar la Barra Lateral solo en la página de Producto Individual

4 ene 2014, 04:59:43
Vistas: 28.1K
Votos: 1

Estoy creando un tema y no quiero mostrar la barra lateral en la página de producto individual.

Siguiendo las recomendaciones de WooCommerce, hice una copia de la carpeta "templates" (del plugin woocommerce) y la instalé en mytheme/templates, cambiando el nombre de la carpeta a "woocommerce". En la raíz de mi tema, creé un archivo llamado sidebar-shop.php.

Por ahora tengo la barra lateral mostrada en la página de tienda y en la página de producto individual. Intenté eliminar do_action('woocommerce_sidebar'); de woocommerce/single-product.php y también intenté crear una condicional en woocommerce/shop/sidebar.php, algo como:

if (!is_page('single-product') { 
    get_sidebar('shop'); 
}

pero la barra lateral permanece.

¿Hay alguna opción funcional para eliminar solo la barra lateral del producto individual?

2
Comentarios

creo que también necesitas agregar esta línea en el archivo de plantilla single-product - remove_action( 'woo_main_after', 'woocommerce_get_sidebar', 10)

Shazzad Shazzad
4 ene 2014 05:24:01

Lo intenté pero no funcionó.

Rico Letterman Rico Letterman
4 ene 2014 05:55:42
Todas las respuestas a la pregunta 3
4

La etiqueta condicional para productos individuales es is_product()

add_action('template_redirect', 'remove_sidebar_shop');
function remove_sidebar_shop() {
if ( is_product('add-page-i.d-here') ) {
    remove_action('woocommerce_sidebar', 'woocommerce_get_sidebar');
    }
}

También puedes querer cambiar el diseño en esa página de producto a ancho completo para eliminar el espacio y reducir el ancho del área de contenido usando una clase personalizada para el cuerpo que también puedes generar condicionalmente.

Etiquetas condicionales de WooCommerce http://docs.woothemes.com/document/conditional-tags/

4 ene 2014 11:46:21
Comentarios

is_product() es simplemente un envoltorio de is_singular('product'). Por lo tanto, ambos funcionan exactamente igual.

Abhik Abhik
4 ene 2014 14:31:32

Necesitarías añadir el slug de la página de producto individual si ( is_product('camiseta') ) {

Brad Dalton Brad Dalton
4 ene 2014 14:36:04

¿Y cómo si quiero eliminarlo para todos los productos? Quiero decir, sin un ID específico

Rico Letterman Rico Letterman
6 ene 2014 00:15:51

if ( is_product() ) {

Brad Dalton Brad Dalton
6 ene 2014 00:28:46
2

Aquí va..

function remove_sidebar_shop() {
    if ( is_singular('product') ) {
        remove_action('woocommerce_sidebar', 'woocommerce_get_sidebar');
    }
}
add_action('template_redirect', 'remove_sidebar_shop');
4 ene 2014 05:36:06
Comentarios

Abhik, el código parecía prometedor pero tampoco funcionó. Me pregunto si "product" es el ID real de la página de producto individual. Gracias de todos modos.

Rico Letterman Rico Letterman
4 ene 2014 05:58:18

@serranegra error mío. init es demasiado tarde para eliminar la acción. Código corregido y ahora debería funcionar bien.

Abhik Abhik
4 ene 2014 08:34:52
0
// Función para eliminar la barra lateral en páginas de producto
function remove_storefront_sidebar() {
    if ( is_product() ) {  // Verifica si es una página de producto
    remove_action( 'storefront_sidebar', 'storefront_get_sidebar', 10 );  // Elimina la acción de la barra lateral
    }
}
// Añade la acción al hook 'get_header'
add_action( 'get_header', 'remove_storefront_sidebar' );

Funciona con la última versión de WooCommerce 2.5.2
También se necesita el siguiente CSS:

/* Estilos para anular el diseño de barra lateral derecha en productos individuales */
.single-product.right-sidebar .content-area {
  float: none;        /* Elimina el flotado */
  margin-right: 0;     /* Elimina el margen derecho */
  width: 100%;        /* Establece el ancho completo */
}
12 feb 2016 03:06:07