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.
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' );
Une approche potentielle ne cache pas tant une barre latérale qu’elle ne l’inclut pas.
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:
WordPress le chargera par défaut.
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.
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
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();
}
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
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.
À 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.