¿Cómo puedo ocultar la barra lateral de una publicación específica?

25 feb 2013, 18:50:12
Vistas: 14.4K
Votos: 1

Me gustaría ocultar la barra lateral en una publicación específica (no en una página). ¿Cómo puedo hacer esto?

Para contextualizar, he buscado bastante tanto en Google como aquí. Encontré muchas soluciones para mostrar diferentes barras laterales en publicaciones vs páginas, o para mostrar (u ocultar) una barra lateral específica en una página específica, pero nada sobre ocultar la barra lateral de una sola publicación específica.

3
Comentarios

¿Qué has encontrado en tu investigación?

brasofilo brasofilo
25 feb 2013 18:58:46

@brasofilo He encontrado mucha información sobre cómo mostrar una barra lateral diferente en las páginas, o sobre cómo mostrar barras laterales diferentes en entradas versus páginas, pero nada que aplique para ocultar la barra lateral en una entrada específica. A menos que hayas encontrado algo que yo no...

ahockley ahockley
25 feb 2013 19:39:48

¿Agregar una casilla de verificación a la pantalla de edición de la entrada?

paul paul
25 feb 2013 21:29:58
Todas las respuestas a la pregunta 7
0

Aquí está una idea que mencioné en Twitter.

function special_post_template( $template ) {
  // Identificar una consulta única para el post especial
  if ( is_single() && 10 == get_the_ID() )
    $template = get_template_directory() . '/special-single.php';

  return $template;
}

add_filter( 'template_include', 'special_post_template' );
26 feb 2013 06:43:33
3

Un enfoque potencial no es tanto "ocultar" una barra lateral como no incluirla.

Páginas

Cada página en tu sitio puede usar una plantilla diferente. Normalmente, crearás una plantilla que usa la predeterminada ("Plantilla predeterminada") que incluye el encabezado, pie de página, contenido y barra(s) lateral(es) como normalmente esperarías. Sin embargo, puedes crear una nueva plantilla de página para tu sitio que siga el mismo formato, pero omita la barra lateral.

Alternativamente, si conoces el ID o el slug de la página en cuestión, puedes crear una plantilla de página solo para esa página. Solo coloca uno de los siguientes archivos en tu tema:

  • page-{id}.php
  • page-{slug}.php

WordPress lo cargará por defecto.

Entradas

Para las entradas, sin embargo, WordPress no soporta este tipo de jerarquía. Puedes solucionarlo creando un tipo de entrada personalizado, luego creando single-{post-type}.php para mostrar ese tipo de entrada sin barra lateral, pero eso podría no ser lo que deseas.

No obstante, si tu tema está aplicando clases de cuerpo apropiadas, entonces puedes filtrar basado en el ID de la entrada nuevamente y usar CSS para ocultar elementos. Cuando usas correctamente body_class() en tu tema, la clase postid-{post-id} se aplicará al cuerpo. Puedes usar esto a tu favor.

/* ... Todas tus demás reglas CSS */

body.postid-15 .sidebar {
    display: none;
}

La desventaja de este enfoque es que el marcado de la barra lateral aún se carga, solo está oculto con CSS. Pero por ahora (hasta que WordPress implemente una plantilla por entrada similar a la que ya tiene por página), esto debería ser suficiente para comenzar.

25 feb 2013 19:52:33
Comentarios

¿Qué tal alguna forma de metadatos? De esta manera el CSS no tendrá que ser actualizado si los IDs de páginas/posts cambian.

nvwd nvwd
25 feb 2013 19:59:09

Los IDs de páginas/posts no deberían cambiar a menos que estés reiniciando tu base de datos y claves. Y si estás haciendo eso, entonces hay suficientes otras cosas ocurriendo como para que esto sea una preocupación mucho menor.

EAMann EAMann
25 feb 2013 20:02:01

Intentemos con un razonamiento diferente... Si quieres especificar qué posts no llevan la barra lateral, los metadatos permitirían configurarlo post por post. Entonces la plantilla puede revisar los metadatos para tomar la decisión.

nvwd nvwd
25 feb 2013 20:10:37
2

¿No podrías simplemente usar el condicional is_single()? ¿O no puedes modificar tu archivo single.php? Si puedes, probaría con una sentencia if para tu publicación.

if(is_single('potato-pancake')) {
   // nada
} else {
   get_sidebar();
} 

Como referencia: http://codex.wordpress.org/Conditional_Tags#A_Single_Post_Page

25 feb 2013 20:02:43
Comentarios

Quiero que la barra lateral esté oculta en una entrada, no en todas las entradas.

ahockley ahockley
25 feb 2013 20:22:45

En realidad, eso es lo que haría ese código. Si estás viendo una sola entrada con ese slug, no hagas nada. De lo contrario (es decir, en todas las entradas) muestra la barra lateral.

EAMann EAMann
25 feb 2013 20:57:27
0

Si necesitas la solución para un solo post, entonces obtén el post id desde tu panel de administración.

(Si pasas el cursor sobre el enlace de edición, verás algo como post=xxx. xxx es tu post id)

Luego cambia tu plantilla individual así:

Digamos que tu ID de post es 66

if (!is_single(66)) {
   get_sidebar();
} 
25 feb 2013 20:32:42
0

Si necesitas esto de forma continua, recomiendo la extensión Theme Layouts de Justin Tadlock. Puedes definir los diseños que desees. Te proporcionará un cuadro de radio en cada entrada para que puedas especificar el diseño que necesitas para cada una.

Es fácil de hacer si conoces el desarrollo de temas para WordPress. Incluye la extensión, añade add_theme_support para theme-layouts, y estarás en camino.

Está incluido en su framework Hybrid Core, o puedes ver las clases de la extensión Theme Layouts aquí: https://github.com/justintadlock/hybrid-core/tree/master/inc

25 feb 2013 22:46:31
1

En mi opinión, una mejor forma es trabajar con plantillas de posts.

En ese caso, para ocultar/eliminar la barra lateral de un post específico sigue estos pasos:

1 - Abre la plantilla de post de tu tema, probablemente single.php, selecciona todo y copia el contenido;

2 - Crea una plantilla de post secundaria, por ejemplo nosidebar-posts.php, pega el contenido de single.php y añade el siguiente código en la línea 1:

<?php
/*
Template Name Posts: Posts sin Barra Lateral
*/
?>

3 - Elimina el <?php get_sidebar(); ?> de nosidebar-posts.php o edítalo como prefieras;

4 - Instala el Plugin Custom Post Template;

5 - Ve a editar el post y notarás un cuadro de Plantilla de Post, selecciona la plantilla "No Sidebar" y listo.

Ahora puedes eliminar la barra lateral de cualquier post simplemente seleccionando la plantilla en tu página de edición de posts y puedes crear múltiples plantillas, como ancho completo, sin barras laterales, etc.

26 feb 2013 07:38:14
Comentarios

¡El Plugin funciona con WP 3.5.1!

drabello drabello
26 feb 2013 08:00:42
0

Si estás en WordPress 4.7 o superior, puedes aplicar las plantillas de página también en las entradas del blog. Solo agrega 'post' como Tipo de Publicación de la Plantilla.

En tu plantilla de página, defínela de la siguiente manera:

<?php 
/*
Template Name: Diseño de ancho completo
Template Post Type: post, page
*/
?>

Ahora en la ventana del editor de entradas, deberías ver la sección Atributos de página mostrando esa plantilla.

Referencia: https://developer.wordpress.org/themes/template-files-section/page-template-files/#creating-page-templates-for-specific-post-types

18 ene 2018 12:23:51