File: /home/muoapartman/www/wp-content/themes/omega/lib/functions/template.php
<?php
/**
* Functions for loading template parts. These functions are helper functions or more flexible functions
* than what core WordPress currently offers with template part loading.
*/
/**
* Loads a post content template based off the post type and/or the post format. This functionality is
* not feasible with the WordPress get_template_part() function, so we have to rely on some custom logic
* and locate_template().
*
* Note that using this function assumes that you're creating a content template to handle attachments.
* This filter must be removed since we're bypassing the WP template hierarchy and focusing on templates
* specific to the content.
*
* @since 0.9.0
* @access public
* @return string
*/
function omega_get_content_template() {
/* Set up an empty array and get the post type. */
$templates = array();
$post_type = get_post_type();
/* Assume the theme developer is creating an attachment template. */
if ( 'attachment' === $post_type ) {
remove_filter( 'the_content', 'prepend_attachment' );
$mime_type = get_post_mime_type();
list( $type, $subtype ) = false !== strpos( $mime_type, '/' ) ? explode( '/', $mime_type ) : array( $mime_type, '' );
$templates[] = "content-attachment-{$type}.php";
$templates[] = "content/attachment-{$type}.php";
}
/* Template based off the post type. */
$templates[] = "content-{$post_type}.php";
$templates[] = "content/{$post_type}.php";
/* Fallback 'content.php' template. */
$templates[] = 'content.php';
$templates[] = 'content/content.php';
/* Allow devs to filter the content template hierarchy. */
$templates = apply_filters( 'omega_content_template_hierarchy', $templates );
/* Apply filters and return the found content template. */
include( apply_filters( 'omega_content_template', locate_template( $templates, false, false ) ) );
}
/**
* A function for loading a menu template. This works similar to the WordPress `get_*()` template functions.
* It's purpose is for loading a menu template part. This function looks for menu templates within the
* `menu` sub-folder or the root theme folder.
*
* @since 0.9.0
* @access public
* @param string $name
* @return void
*/
function omega_get_menu( $name = '' ) {
$templates = array();
if ( '' !== $name ) {
$templates[] = "menu-{$name}.php";
$templates[] = "menu/{$name}.php";
}
$templates[] = 'menu.php';
$templates[] = 'menu/menu.php';
locate_template( $templates, true );
}
/**
* This is a replacement function for the WordPress `get_sidebar()` function. The reason for this function
* over the core function is because the core function does not provide the functionality needed to properly
* implement what's needed, particularly the ability to add sidebar templates to a sub-directory.
* Technically, there's a workaround for that using the `get_sidebar` hook, but it requires keeping a
* an empty `sidebar.php` template in the theme's root, which will get loaded every time a sidebar template
* gets loaded. That's kind of nasty hack, which leaves us with this function. This is the **only**
* clean solution currently possible.
*
* This function maintains compatibility with the core `get_sidebar()` function. It does so in two ways:
* 1) The `get_sidebar` hook is properly fired and 2) The core naming convention of sidebar templates
* (`sidebar-$name.php` and `sidebar.php`) is preserved and given a higher priority than custom templates.
*
* @link http://core.trac.wordpress.org/ticket/15086
* @link http://core.trac.wordpress.org/ticket/18676
*
* @since 0.9.0
* @access public
* @param string $name
* @return void
*/
function omega_get_sidebar( $name = null ) {
do_action( 'get_sidebar', $name ); // Core WordPress hook
$templates = array();
if ( '' !== $name ) {
$templates[] = "sidebar-{$name}.php";
$templates[] = "sidebar/{$name}.php";
}
$templates[] = 'sidebar.php';
$templates[] = 'sidebar/sidebar.php';
locate_template( $templates, true );
}