Come posso nascondere la sidebar da un post specifico?

25 feb 2013, 18:50:12
Visualizzazioni: 14.4K
Voti: 1

Vorrei nascondere la sidebar su un post specifico (non una pagina). Come posso farlo?

Per contesto, ho cercato molto sia su Google che qui. Ho trovato molte soluzioni per mostrare sidebar diverse tra post e pagine, o per mostrare (o nascondere) una sidebar specifica su una pagina specifica, ma nulla che riguardi la rimozione della sidebar da un singolo post specifico.

3
Commenti

Cosa hai trovato nella tua ricerca?

brasofilo brasofilo
25 feb 2013 18:58:46

@brasofilo Ho trovato molte informazioni su come mostrare una sidebar diversa nelle pagine, o su come mostrare sidebar diverse negli articoli rispetto alle pagine, ma nulla che si applichi a nascondere la sidebar in un singolo articolo specifico. A meno che tu non abbia trovato qualcosa che mi è sfuggito...

ahockley ahockley
25 feb 2013 19:39:48

Aggiungere una casella di controllo nella schermata di modifica dell'articolo?

paul paul
25 feb 2013 21:29:58
Tutte le risposte alla domanda 7
0

Ecco un'idea che ho menzionato su Twitter.

function special_post_template( $template ) {
  // Identifica una query singola per il post speciale
  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 approccio potenziale non consiste tanto nel "nascondere" una sidebar quanto nel non includerla affatto.

Pagine

Ogni pagina del tuo sito può utilizzare un template diverso. Di solito, creerai un template che utilizza quello predefinito ("Template predefinito") che include header, footer, contenuto e sidebar come ci si aspetterebbe normalmente. Tuttavia, puoi creare un nuovo template di pagina per il tuo sito che segua lo stesso formato, ma ometta la sidebar.

In alternativa, se conosci l'ID o lo slug della pagina in questione, puoi creare un template di pagina specifico per quella pagina. Basta inserire uno dei seguenti file nel tuo tema:

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

WordPress li caricherà automaticamente.

Articoli

Per gli articoli, però, WordPress non supporta questo tipo di gerarchia. Puoi aggirare il problema creando un custom post type, quindi creando single-{post-type}.php per visualizzare quel tipo di articolo senza sidebar, ma potrebbe non essere quello che desideri.

Tuttavia, se il tuo tema applica le classi corrette al corpo della pagina, allora puoi filtrare in base all'ID dell'articolo e utilizzare CSS per nascondere gli elementi. Quando usi correttamente body_class() nel tuo tema, la classe postid-{post-id} verrà applicata al body. Puoi sfruttare questo a tuo vantaggio.

/* ... Tutte le altre regole CSS */

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

Lo svantaggio di questo approccio è che il markup della sidebar viene comunque caricato, è solo nascosto tramite CSS. Ma per ora (finché WordPress non implementerà un template per articolo simile a quello che già ha per le pagine), questo dovrebbe essere sufficiente per iniziare.

25 feb 2013 19:52:33
Commenti

Che ne dici di una qualche forma di metadati? In questo modo il CSS non dovrà essere aggiornato se gli ID di pagine/post cambiano.

nvwd nvwd
25 feb 2013 19:59:09

Gli ID di pagine/post non dovrebbero cambiare a meno che tu non stia resettando il tuo database e le chiavi. E se lo stai facendo, ci sono così tante altre cose da sistemare che questa sarebbe una preoccupazione molto minore.

EAMann EAMann
25 feb 2013 20:02:01

Proviamo con un ragionamento diverso... Se vuoi specificare quali post non devono avere la sidebar, i metadati ti permetterebbero di impostarlo post per post. Poi il template può controllare i metadati per prendere la decisione.

nvwd nvwd
25 feb 2013 20:10:37
2

Non potresti semplicemente utilizzare il condizionale is_single()? O non puoi modificare il tuo file single.php. Se puoi, proverei con un'istruzione if per il tuo articolo.

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

Per riferimento: http://codex.wordpress.org/Conditional_Tags#A_Single_Post_Page

25 feb 2013 20:02:43
Commenti

Voglio che la barra laterale sia nascosta su un singolo post, non su tutti i post.

ahockley ahockley
25 feb 2013 20:22:45

In realtà, è esattamente ciò che farebbe quel codice. Se stai visualizzando un singolo post con quello slug, non fare nulla. Altrimenti (cioè in tutti gli altri post) mostra la barra laterale.

EAMann EAMann
25 feb 2013 20:57:27
0

Se hai bisogno della soluzione per un solo articolo, ottieni l'ID dell'articolo dal pannello di amministrazione.

(Se passi il mouse sopra il link modifica, vedrai qualcosa come post=xxx. xxx è il tuo ID dell'articolo)

Quindi modifica il tuo template singolo in questo modo

Supponiamo che l'ID del tuo articolo sia 66

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

Se hai bisogno di questa funzionalità in modo continuativo, ti consiglio l'estensione Theme Layouts di Justin Tadlock. Puoi definire i layout che desideri. Ti fornirà una casella radio su ogni articolo in modo da poter specificare il layout necessario per ciascuno.

È facile da implementare se conosci lo sviluppo di temi WordPress. Includi l'estensione, aggiungi add_theme_support per theme-layouts, e sei a buon punto.

È inclusa nel suo framework Hybrid Core, oppure puoi vedere le classi dell'estensione Theme Layouts qui: https://github.com/justintadlock/hybrid-core/tree/master/inc

25 feb 2013 22:46:31
1

Secondo me un modo migliore è lavorare con i template dei post.

In questo caso, per nascondere/rimuovere la sidebar da un post specifico segui questi passaggi:

1 - Apri il template dei post del tuo tema, probabilmente single.php, seleziona tutto e copia il contenuto;

2 - Crea un template secondario per i post, ad esempio nosidebar-posts.php, incolla il contenuto di single.php e aggiungi il seguente codice alla riga 1:

<?php
/*
Template Name Posts: Post senza Sidebar
*/
?>

3 - Rimuovi il codice <?php get_sidebar(); ?> da nosidebar-posts.php o modificalo come preferisci;

4 - Installa il plugin Custom Post Template;

5 - Vai a modificare un post e noterai un riquadro Post Template, seleziona il template Senza Sidebar e il gioco è fatto.

Ora puoi rimuovere la sidebar da qualsiasi post semplicemente selezionando il template nella pagina di modifica del post e puoi creare template multipli, come a larghezza intera, senza sidebar ecc.

26 feb 2013 07:38:14
Commenti

Il Plugin funziona con WP 3.5.1!

drabello drabello
26 feb 2013 08:00:42
0

Se utilizzi WordPress 4.7 o versioni successive, puoi applicare i modelli di pagina anche agli articoli del blog. Basta aggiungere 'post' come Template Post Type.

Nel tuo modello di pagina, definiscilo nel seguente modo:

<?php 
/*
Template Name: Layout a larghezza intera
Template Post Type: post, page
*/
?>

Ora nella finestra di modifica dell'articolo, dovresti vedere la sezione Attributi pagina che mostra quel modello.

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

18 gen 2018 12:23:51