我的目标是摆脱所有页面上的侧边栏,但我的网站安装了Roots,因此page.php模板只有这个代码:
<?php get_template_part('templates/page', 'header'); ?>
<?php get_template_part('templates/content', 'page'); ?>
第一个问题,这是什么意思?这些模板“部分”在哪里?其次,如何在部分或全部页面上删除侧边栏?
编辑:在templates / content-page.php中添加代码:
<?php while (have_posts()) : the_post(); ?>
<?php the_content(); ?>
<?php wp_link_pages(array('before' => '<nav class="pagination">', 'after' => '</nav>')); ?>
<?php endwhile; ?>
我有更多的好东西。这是来自lib / sidebar.php。看起来Roots有一些决定个别元素的方法,基于它们上面的标志或是什么,是否显示它们。有PHP知识的人可以解释这可能会做什么吗?
<?php
/**
* Determines whether or not to display the sidebar based on an array of conditional tags or page templates.
*
* If any of the is_* conditional tags or is_page_template(template_file) checks return true, the sidebar will NOT be displayed.
*
* @param array list of conditional tags (http://codex.wordpress.org/Conditional_Tags)
* @param array list of page templates. These will be checked via is_page_template()
*
* @return boolean True will display the sidebar, False will not
*
*/
class Roots_Sidebar {
private $conditionals;
private $templates;
public $display = true;
function __construct($conditionals = array(), $templates = array()) {
$this->conditionals = $conditionals;
$this->templates = $templates;
$conditionals = array_map(array($this, 'check_conditional_tag'), $this->conditionals);
$templates = array_map(array($this, 'check_page_template'), $this->templates);
if (in_array(true, $conditionals) || in_array(true, $templates)) {
$this->display = false;
}
}
private function check_conditional_tag($conditional_tag) {
if (is_array($conditional_tag)) {
return $conditional_tag[0]($conditional_tag[1]);
} else {
return $conditional_tag();
}
}
private function check_page_template($page_template) {
return is_page_template($page_template);
}
}
答案 0 :(得分:3)
在主题主页上有这方面的指南:
http://roots.io/the-roots-sidebar/
上面提到了Ali Exhalter,但基本上你需要找到lib / config.php文件并将相应的函数名添加到数组列表中。在这种情况下,如果您希望从所有页面中删除,is_page将起作用。
config.php将如下所示:
function roots_display_sidebar() {
$sidebar_config = new Roots_Sidebar(
array(
'is_404',
'is_front_page',
'is_page'
),
/**
* Page template checks (via is_page_template())
* Any of these page templates that return true won't show the sidebar
*/
array(
'template-custom.php'
)
);
也可以指定隐藏侧栏的某些模板。
答案 1 :(得分:0)
如果没有安装主题本身,它看起来有主题选项,可以让您使用标准WP管理区域禁用侧边栏。这将是一个推荐的选项,因为它使您能够在以后重新激活侧边栏。但是,如果您要永久删除侧边栏,请尝试评论base.php
的第21-25行;应该删除对根侧边栏功能的调用。
答案 2 :(得分:0)
据我所知,没有选项可以通过WordPress管理员从根目录中删除侧边栏。在您的子主题functions.php
中抛出以下代码段以完全删除侧边栏:
// functions.php
add_filter('roots_display_sidebar', 'roots_sidebar_on_special_page');
function roots_sidebar_on_special_page($sidebar) {
return false;
}
您还可以根据页面数据some additional info on that here有条件地禁用侧边栏。