Skip to content
ROCKHARBOR base theme for WordPress. This is where all of the actual work for the RH websites is done.
JavaScript PHP CSS Smarty
Failed to load latest commit information.
ccbpress More WP 4.4 fixes and some CCBPress tweaks Apr 7, 2016
css Fixes Sidr scrolling Apr 14, 2016
img Changes mission statement to image and fixes SVG logo widths (max-width) Sep 12, 2015
js Removes CORE events sidebar JS Apr 14, 2016
libs Fixes new WP4.4 responsive srcset URLs to work with S3 May 9, 2016
vendors Used gitmodule for S3 class Jun 11, 2013
.gitignore Change sprite to svg icons, mobile style tweaks Jan 2, 2015
.gitmodules Used gitmodule for S3 class Jun 11, 2013
404.php Compatibility fixes for WP 4.4.x and dead code cleanup Apr 4, 2016 Added app icon meta Jun 12, 2013
_style.css Added pull quote styles May 23, 2013
archive.php Compatibility fixes for WP 4.4.x and dead code cleanup Apr 5, 2016
comments.php Fixes comments after removing Social plugin Oct 15, 2015
content-curriculum-category.php Added basic curriculum post type Oct 25, 2012
content-message.php Message single page Jan 2, 2015
content-staff.php Merge branch 'responsive' into dev Mar 7, 2013
download.php Facilitating downloads for message media Jun 13, 2013
footer.php Adds Charlotte to the campus menus Oct 16, 2015
opensearch.php Adds OpenSearch to support Chrome URL bar site search Jun 19, 2015
rss.php Removed trailing whitespace Mar 4, 2013
searchform.php Made design work better with lower IE versions. Closed #17 Nov 7, 2011
sidebar.php Just kidding, don't want a submenu widget May 7, 2013
single-curriculum.php Added basic curriculum post type Oct 25, 2012
single-message.php Compatibility fixes for WP 4.4.x and dead code cleanup Apr 5, 2016
upload.php Added s3 hooks to uploader Apr 16, 2013


This WordPress theme contains all of the necessary components for creating a subsite. Subsites require a few special files for themselves to customize the colors.


Directory structure

At the very least, the following files should be created.


Required files


The child theme CSS should only contain styles for that child theme that need to be overridden. This usually just includes colors, but can include styles that utilize images.

There is a stylesheet called _style.css that serves as a template for child theme css sheets.

Including the theme class

Also required is a class within /libs called ChildTheme(). It must extend RockharborThemeBase. All that needs to be defined are the $themeOptions as explained in the base class.

Next, create a functions.php file

function _include_theme() {
    require_once 'libs/child_theme.php';
    global $theme;
    $theme = new ChildTheme();
add_action('after_setup_theme', '_include_theme');

This is required because WordPress doesn't use OOP and includes files in the opposite order one would suspect. It is needed to overwrite the global $theme.

A bit more

There are some images required by the subsites, indicated in the directory structure.

Required configuration

Below is a list of the configuration required in the WordPress backend once the site is created:

  • Menus needs to be created and assigned to the Main and Footer navigation areas
  • Theme options need to be defined, as they do not fall back on the parent theme
  • Site title in Settings > General needs to be defined
  • Under Settings > Reading, change the front page to display a static page and choose your homepage
  • Go to Network Admin (top right), then to Settings and make sure subsites are allowed to upload content

In order to pull Twitter feeds, a Twitter application must be made and the consumer credentials stored in wp-config.php:

define('TWITTER_CONSUMER_KEY', 'my consumer key');
define('TWITTER_CONSUMER_SECRET', 'my secret key');

This allows themes to authenticate Twitter users (usually the site's Twitter account) against the application. The application only needs read permission as all it does it use Twitter's /search/tweets API endpoint.

Front page

The featured stories area above the fold on the front page is controlled by a menu area called "featured." To add a feature, add a menu item to the "featured" area's menu.


Since each site is a child of the main site and can have any feature it has, you must dictate what features you would like the subsite to use using the supports key in the $themeOptions var. Turning a feature on or off does not affect the database.

If you pass $archive == true in the post type's option var, a shortcode will automatically be created for that post type, e.g. [staff]. This will embed the archives for that type using the template content-$post_type.php. For single views, it will use the single-$post_type.php template.

The following features are available:


It also creates various conveniences, including a taxonomy for staff called "department" and meta boxes to organize the information.

To pull from a specific campus, include the campus attribute along with the WordPress blog id (see a list of the sites to get the id). For example, to pull all of the staff from the second blog:

[staff campus="2"]


The message post type contains two taxonomies, "series" and "teachers." Series are like categories for the messages, and teachers are the speakers who taught the message. Unlike teachers, only one series can be defined per message.

Aside from the archive-generating [message] shortcode, the message post type comes with a [single-message] shortcode that can be used to show a single message from any campus.


YAWPH (yah-ff) Yet Another WordPress Hack - A hack to make WordPress work in the way you might imagine it to, or to work in a way common programming practices would dictate. While much of the site is made up of YAWPHs, I've only begun to document them as of this commit.

Something went wrong with that request. Please try again.