web-dev-qa-db-fra.com

Comment puis-je masquer la barre latérale d'un message spécifique?

Je voudrais cacher la barre latérale sur un post spécifique (pas page). Comment puis-je faire ceci?

Pour le contexte, j'ai cherché un peu à la fois sur Google et ici. Je trouve de nombreuses solutions pour afficher différentes barres latérales sur les publications en fonction des pages, ou pour afficher (ou masquer) une barre latérale spécifique sur une page , mais rien qui cache la barre latérale d’un message spécifique en particulier.

1
ahockley

Voici une idée que j'ai mentionnée sur Twitter.

function special_post_template( $template ) {
  // Identify a single query for the special post
  if ( is_single() && 10 == get_the_ID() )
    $template = get_template_directory() . '/special-single.php';

  return $template;
}

add_filter( 'template_include', 'special_post_template' );
3
Evan

Une approche potentielle ne cache pas tant une barre latérale qu’elle ne l’inclut pas.

Des pages

Chaque page de votre site peut utiliser un modèle différent. Généralement, vous créez simplement un modèle qui utilise la valeur par défaut ("Modèle par défaut") et qui comprend l'en-tête, le pied de page, le contenu et les barres latérales comme vous le souhaiteriez normalement. Cependant, vous pouvez créer un nouveau modèle de page pour votre site, qui suit le même formatage, mais en omettant la barre latérale.

Alternativement, si vous connaissez l'ID ou le slug de la page en question, vous pouvez créer un modèle de page juste pour ce rythme. Il suffit de placer l'un des fichiers suivants sur votre thème:

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

WordPress le chargera par défaut.

Des postes

Pour les articles, WordPress ne supporte pas ce type de hiérarchie. Vous pouvez le contourner en créant un type de publication personnalisé, puis en créant single-{post-type}.php pour afficher ce type de publication sans barre latérale, mais ce n'est peut-être pas ce que vous voulez.

Cependant, si votre thème applique des classes de corps appropriées, vous pouvez filtrer à nouveau en fonction de l'ID de publication et utilisez CSS pour masquer des éléments. Si vous utilisez correctement body_class() dans votre thème, la classe postid-{post-id} sera appliquée au corps. Vous pouvez utiliser ça à votre avantage.

/* ... All of your other CSS rules */

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

L'inconvénient de cette approche est que le balisage de la barre latérale est toujours chargé, il est simplement masqué avec CSS. Mais pour l’instant (jusqu’à ce que WordPress mette en place un modèle par publication similaire à celui qu’il possède déjà par page), cela devrait suffire à vous aider à démarrer.

1
EAMann

Ne pourriez-vous pas simplement exploiter le conditionnel is_single ()? Ou êtes-vous incapable de toucher votre fichier single.php. Si vous le pouvez, j'essaierai une déclaration if pour votre message.

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

Pour référence: http://codex.wordpress.org/Conditional_Tags#A_Single_Post_Page

1
TheShnozz

Si vous avez besoin de la solution pour un seul message, procurez-vous le post id dans votre panneau d'administration.

(Si vous survolez edit link, vous verrez quelque chose comme post=xxx. xxx est votre post id)

Puis changez votre modèle unique comme ceci

Disons que votre identifiant de publication est 66

if (!is_single(66)) {
   get_sidebar();
} 
1
Giri

Si vous en avez besoin régulièrement, je vous recommande l’extension Thème Layouts de Justin Tadlock. Vous pouvez définir les mises en page souhaitées. Il vous donnera une boîte radio sur chaque message afin que vous puissiez spécifier la mise en page dont vous avez besoin pour chacun.

C'est facile à faire si vous connaissez les thèmes WordPress. Incluez l'extension add_theme_support pour les dispositions de thème et vous êtes sur le chemin.

Il est inclus dans son framework Hybrid Core, ou vous pouvez voir les classes d'extension Theme Layouts ici: https://github.com/justintadlock/hybrid-core/tree/master/inc

1
mindctrl

Si vous utilisez WordPress 4.7 ou une version ultérieure, vous pouvez également appliquer les modèles de page aux articles de blog. Il suffit d’ajouter un message en tant que type de message type.

Sur votre modèle de page, définissez-le comme suit:

<?php 
/*
Template Name: Full-width layout
Template Post Type: post, page
*/
?>

Maintenant, dans la fenêtre de publication de l'éditeur, vous devriez voir la section Attributs de page montrant ce modèle.

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

0
Nigel

À mon avis, un meilleur moyen consiste à utiliser des modèles de publication.

Dans ce cas, pour masquer/supprimer la barre latérale d'un message spécifique, procédez comme suit:

1 - Ouvrez votre modèle de message de thème, probablement single.php, sélectionnez tout et copiez le contenu;

2 - Créez un modèle de publication secondaire, c’est-à-dire nosidebar-posts.php, collez le contenu single.php et ajoutez le code suivant à la ligne 1:

<?php
/*
Template Name Posts: No Sidebar Posts
*/
?>

3 - Supprimez la <?php get_sidebar(); ?> de nosidebar-posts.php ou modifiez-la à votre guise;

4 - Installez le Custom Post Template Plugin ;

5 - Allez à modifier le message et vous remarquerez une boîte de modèle de publication, sélectionnez le champ non latéral et vous avez terminé.

Vous pouvez maintenant supprimer la barre latérale de n’importe quel article en sélectionnant simplement le modèle dans la page de modification de votre article. Vous pouvez créer plusieurs modèles, comme toute la largeur, aucune barre latérale, etc.

0
drabello