我如何才能对特定帖子隐藏侧边栏?

时间:2013-02-25 作者:ahockley

我想隐藏特定帖子(而不是页面)上的侧边栏。我该怎么做?

关于背景,我在谷歌和这里都搜索了不少。我找到了很多解决方案,可以在帖子和页面上显示不同的侧边栏,或者在特定的页面上显示(或隐藏)特定的侧边栏,但没有任何方法可以隐藏单个特定帖子的侧边栏。

7 个回复
SO网友:Evan

这是我在推特上提到的一个想法。

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\' );

SO网友:EAMann

一种可能的方法并不是太多;隐藏“;一个侧栏,因为它不包括它。

页面

站点中的每个页面都可以使用不同的模板。通常,您只需创建一个使用默认值的模板(“default template”)这包括页眉、页脚、内容和您通常期望的侧栏。但是,您可以创建new page template 对于遵循相同格式但忽略侧栏的站点。

或者,如果您知道所讨论的页面的ID或slug,您可以创建一个页面模板来适应这种速度只需在主题上放置以下文件之一:

第{id}页。php

  • 第-{slug}页。默认情况下,php将加载它。

    帖子

    对于帖子,tho,WordPress不支持这种层次结构。您可以通过创建自定义帖子类型,然后创建single-{post-type}.php 显示没有侧栏的帖子类型,但这可能不是您想要的。

    但是,如果您的主题应用了适当的主体类,那么您可以再次基于帖子ID进行过滤,并使用CSS隐藏内容。正确使用时body_class() 在你的主题中postid-{post-id} 将应用于车身。你可以利用这个优势。

    /* ... All of your other CSS rules */
    
    body.postid-15 .sidebar {
        display: none;
    }
    
    这种方法的缺点是侧栏标记仍然是加载的,只是用CSS隐藏了它。但就目前而言(直到WordPress实现了一个类似于现有每页的每篇文章模板),这应该足以让您开始。

  • SO网友:TheShnozz

    难道你不能直接进入is\\u single()条件吗?或者你无法触摸你的单身。php文件。如果可以的话,我会为你的帖子尝试一个If语句。

    if(is_single(\'potato-pancake\')) {
       // nothing
    } else {
       get_sidebar();
    } 
    
    供参考:http://codex.wordpress.org/Conditional_Tags#A_Single_Post_Page

    SO网友:PrivateUser

    如果您只需要一篇文章的解决方案,那么请获取post id 从您的管理面板。

    (如果您将鼠标悬停在edit link, 你会看到post=xxx. xxx 是你的post id)

    然后像这样更改单个模板

    假设您的帖子id为66

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

    SO网友:mindctrl

    如果您需要在持续的基础上,我推荐JustinTadlock的主题布局扩展。可以定义所需的布局。它会在每个帖子上给你一个单选框,这样你就可以指定每个帖子所需的布局。

    如果你知道WordPress主题,这很容易做到。包括扩展,添加对主题布局的\\u theme\\u支持,您就可以开始了。

    它包含在他的混合核心框架中,或者您可以在此处看到主题布局扩展类:https://github.com/justintadlock/hybrid-core/tree/master/inc

    SO网友:drabello

    在我看来,更好的方法是使用帖子模板。

    在这种情况下,要从特定帖子中隐藏/删除侧栏,请执行以下步骤:

    1-打开你的主题帖子模板,可能single.php, 全选并复制内容;

    2-创建辅助帖子模板,即。nosidebar-posts.php, 粘贴single.php 内容并在第1行中添加以下代码:

    <?php
    /*
    Template Name Posts: No Sidebar Posts
    */
    ?>
    
    3-拆下<?php get_sidebar(); ?> 从…起nosidebar-posts.php 或根据您的喜好进行编辑;

    4-安装Custom Post Template Plugin;

    5-转到编辑帖子,你会注意到一个帖子模板框,选择无侧边栏tpl,你就完成了。

    现在,只需在编辑帖子页面中选择模板,就可以从任何帖子中删除侧栏,并且可以创建多个模板,如全幅、无侧栏等。

    SO网友:Nigel

    如果您使用的是WordPress 4.7或更高版本,您也可以将页面模板应用于博客文章。只需将帖子添加为模板帖子类型。

    在页面模板上,按如下方式定义它:

    <?php 
    /*
    Template Name: Full-width layout
    Template Post Type: post, page
    */
    ?>
    
    现在在post editor窗口中,您应该看到显示该模板的页面属性部分。

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

    结束

    相关推荐

    Identifying Importer Posts

    如果一个站点有100篇帖子,其中有数量不详的帖子是手动编写的,其余的帖子是使用WordPress导入器创建的,那么在没有访问远程站点或原始导入文件的情况下,我如何以编程方式识别导入的帖子?E、 g.这篇文章是由进口商工具创建的吗?