删除类别页面上的侧边栏

时间:2016-11-18 作者:Etherplain

我有一个Wordpress网站,可以通过电子邮件接收帖子,并将其分为特定类别。我刚刚采用了一个新的主题(Astrid),虽然我能够使用css和子主题对其进行自定义,但侧边栏始终存在于类别/归档视图中,这让我感到沮丧。有没有办法(可能使用category.php)从所有类别页面中删除侧边栏(对于我的网站来说,侧边栏意味着除了一个静态的“关于”页面和显示最新博客文章的主页本身之外的所有页面)。

非常感谢!

4 个回复
SO网友:Jignesh Patel

类别页面流(从下到上)如下所示:

category-slug.php
category-ID.php
category.php
archive.php
index.php
因此您不能创建强制category.php. 打开当前主题archive.php. 并编辑此代码。

<?php 
     if( !is_category() ){
        get_sidebar();
      }
?>

SO网友:Ranuka

此解决方案取决于主题。有时,此解决方案不适用于您的主题。

转到类别。php页面。

查找get_sidebar 作用

移除get_sidebar 函数,包括参数(如果有)。

您可能还需要更改一些css部分。如果您没有使用子主题,那么在更新主题时,您的自定义将丢失。

SO网友:Etherplain

所以,同样的,你可能去商店找不到你要买的那一件东西,然后崩溃,问别人,结果发现它就在你身后。。。。我想出来了。我作弊了,但我发现如果你只是将全宽页面模板复制到类别中。php(我必须创建)只需更改一行代码,就可以完成这项工作。这里是完整的php,如果它对任何人都有帮助的话。

    <?php

/*

Template Name: Full width

*/
    get_header();
?>



    <div id="primary" class="content-area fullwidth">
        <main id="main" class="site-main" role="main">

            <?php while ( have_posts() ) : the_post(); ?>

                <?php get_template_part( \'template-parts/content\', \'page\' ); ?>

                <?php

                    if ( comments_open() || \'0\' != get_comments_number() ) :

                        comments_template();

                    endif;
                ?>

            <?php endwhile; // end of the loop. ?>


        </main><!-- #main -->
    </div><!-- #primary -->

<?php get_footer(); ?>
你唯一需要改变的就是这里。将页面更改为类别:

<?php get_template_part( \'template-parts/content\', \'category\' ); ?>
也就是说,我相信有一种更简单的方法来解决这个问题。一种方法可能是在特定页面上显示类别(主题的页面模板将在其中发挥作用),而不是像我一样重定向到类别。

SO网友:Steven Johnson

您提供的示例之所以有效,是因为您创建的新模板连接到内容类别。php,默认情况下,它不存在于Astrid主题中。

我只对Astrid的代码进行了简短的扫描,但看起来只有一个侧栏,叫做index.php.

如果您试图避免特定存档和类别页面上的侧栏,请打开索引。php,您应该看到以下内容:

<?php
/**
* The main template file.
*
* This is the most generic template file in a WordPress theme
* and one of the two required files for a theme (the other being style.css).
* It is used to display a page when nothing more specific matches a query.
* E.g., it puts together the home page when no home.php file exists.
*
* @link https://codex.wordpress.org/Template_Hierarchy
*
* @package Astrid
*/

get_header(); ?>

<div id="primary" class="content-area">
    <main id="main" class="site-main" role="main">

    <?php
    if ( have_posts() ) :

        if ( is_home() && ! is_front_page() ) : ?>
            <header>
                <h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1>
            </header>

        <?php
        endif;

        /* Start the Loop */
        while ( have_posts() ) : the_post();

            /*
             * Include the Post-Format-specific template for the content.
             * If you want to override this in a child theme, then include a file
             * called content-___.php (where ___ is the Post Format name) and that will be used instead.
             */
            get_template_part( \'template-parts/content\', get_post_format() );

        endwhile;

        the_posts_navigation();

    else :

        get_template_part( \'template-parts/content\', \'none\' );

    endif; ?>

    </main><!-- #main -->
</div><!-- #primary -->

<?php
get_sidebar();
get_footer();
在索引的底部。php,get_sidebar(); 调用时没有条件。

如果我正确理解您的问题,最简单的解决方法是将get\\u sidebar()方法包装在条件语句中,如下所示:

    if( !is_category() && !is_archive() ) {
    get_sidebar();
}