<?php // Initial sanity check if (! defined('ABSPATH')) die('Please do not directly access this file'); // classes are a VERY important part of 2.0, so you need to be familiar with them. class thesis_skin_example extends thesis_custom_loop { public function __construct() { // run the parent constructor so we can access the thesis custom loop api parent::__construct(); // run the main init add_action('init', array($this, 'init')); } public function init() { // actions and filters that will run on init. you could put other things here if you need. $this->actions(); $this->filters(); $this->switch_skin(); } public function actions() { // add and remove actions here // modify the nav menu to exclude the div wrapper that WP defaults to remove_action('thesis_hook_before_header', 'thesis_nav_menu'); add_action('thesis_hook_before_header', array($this, 'nav')); } public function filters() { // add and remove filters here /* * Filter out the standard thesis style.css. * Run this with a priority of 11 if you want to make sure the gravity forms css gets added. */ add_filter('thesis_css', array($this, 'css'), 11, 4); } public function css($contents, $thesis_css, $style, $multisite) { // filter the Thesis generated css. in this example we're removing all the nav styles related to color $generated_css = $this->filter_css($thesis_css->css); /* * You can access the thesis_css object, which contains a variety of settings. * As an example, I'll show you how to access nav text color. * Remember that you can always do this in custom.css if you don't care about users having control over the colors */ $my_css = "\n/*---:[ my nav menu styles ]:---*/\n" // it's always a good idea to add in comments as to what you're adding . ".menu li a { color: #{$thesis_css->nav['link']['color']} }\n" . ".menu li a:hover { color: #{$thesis_css->nav['link']['hover']} }\n\n"; // put in everything except the main thesis style.css. also add an initial css reset $css = $thesis_css->fonts_to_import . $this->css_reset . $generated_css . $my_css; // return it return $css; } public function filter_css($css) { if (! empty($css)) { // remove the nav colors if (preg_match('|/\*---:\[ nav colors \]:---\*/|i', $css)) $css = preg_replace('|/\*---:\[ nav colors \]:---\*/(\n.+){7}|i', '', $css); // you could add more filtering here } return $css; } public function nav() { // we're doing this so we can remove the default container div output by WordPress global $thesis_site; if (function_exists('wp_nav_menu') && $thesis_site->nav['type'] == 'wp') { #wp $args = array( 'theme_location' => 'primary', 'container' => '', 'fallback_cb' => 'thesis_nav_default' ); wp_nav_menu($args); #wp echo "\n"; } else thesis_nav_default(); } public function switch_skin() { // Since after_switch_theme won't run, let's make sure that we generate the CSS if (is_admin() && ! get_option(__CLASS__ . '_generate')) { thesis_generate_css(); update_option(__CLASS__ . '_generate', 1); wp_cache_flush(); } else return null; } public function home() { // this is really just what thesis normally does, except we are excluding posts in "uncategorized" $post_count = 1; $teaser_count = 1; $args = array( 'category__not_in' => array(1) // pass an array of cat ids you DON'T want ); $home_query = new WP_Query($args); // stick that in the WP_Query class while ($home_query->have_posts()) { // I do my while loops in brackets cuz I'm a rebel like that $home_query->the_post(); if (apply_filters('thesis_is_teaser', thesis_is_teaser($post_count))) { if (($teaser_count % 2) == 1) { $top = ($post_count == 1) ? ' top' : ''; $open_box = '<div class="teasers_box$top">'; $close_box = ''; $right = false; } else { $open_box = ''; $close_box = "</div>"; $right = true; } if ($open_box != '') { echo $open_box; thesis_hook_before_teasers_box($post_count); } thesis_teaser($classes, $post_count, $right); if ($close_box != '') { echo $close_box; thesis_hook_after_teasers_box($post_count); } $teaser_count++; } else { $classes = 'post_box'; if ($post_count == 1) $classes .= ' top'; thesis_post_box($classes, $post_count); } $post_count++; } if ((($teaser_count - 1) % 2) == 1) echo "</div>"; } } new thesis_skin_example;