My goal is to get rid of the sidebar on all Pages, but my website has Roots installed and so the page.php template just has this code:
<?php get_template_part('templates/page', 'header'); ?>
<?php get_template_part('templates/content', 'page'); ?>
First question, what does this mean? Where are these template "parts"? Secondly, how do I get rid of the sidebar on some or all pages?
Edit: adding code in 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; ?>
I have more goodies. This is from lib/sidebar.php. Looks like Roots has some way of deciding for individual elements, based on flags on them or something, whether to show them. Can someone with PHP knowledge explain what this is likely to do?
<?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);
}
}
Without having installed the theme itself, it looks like it has theme options that would let you disable the sidebar using the standard WP admin area. This would be a recommended option, as it leaves you able to reactivate the sidebar at a later date. However, if you want to remove the sidebars permanently try commenting out lines 21-25 of base.php
; that should remove the call to the roots sidebar functions.
As far as I know, there is not an option to remove the sidebar from roots via the WordPress admin. In your child theme's functions.php
throw the following snippet to remove the sidebar completely:
// functions.php
add_filter('roots_display_sidebar', 'roots_sidebar_on_special_page');
function roots_sidebar_on_special_page($sidebar) {
return false;
}
You can also conditionally disable the sidebar based on page data, some additional info on that here.
There is guide to this on the roots theme homepage:
http://roots.io/the-roots-sidebar/
It was Ali Exhalter touched on above but basically you need to find the lib/config.php file and add the appropriate function name to the array list. In this case is_page would work if you wish to remove from all pages.
config.php will look as below:
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'
)
);
It is also possible to specify certain templates that hide the sidebar also.