Created
February 13, 2017 22:03
-
-
Save jack-pallot/1b7de8a6f7eee94f8fb6a4f5a2f45588 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* credit: https://github.com/humanmade/hm-core/blob/master/hm-core.functions.php#L1236 | |
* Like get_template_part() put lets you pass args to the template file | |
* Args are available in the tempalte as $template_args array | |
* @param string filepart | |
* @param mixed wp_args style argument list | |
*/ | |
function get_template_partial( $file, $template_args = array(), $cache_args = array() ) { | |
$template_args = wp_parse_args( $template_args ); | |
$cache_args = wp_parse_args( $cache_args ); | |
if ( $cache_args ) { | |
foreach ( $template_args as $key => $value ) { | |
if ( is_scalar( $value ) || is_array( $value ) ) { | |
$cache_args[$key] = $value; | |
} else if ( is_object( $value ) && method_exists( $value, 'get_id' ) ) { | |
$cache_args[$key] = call_user_method( 'get_id', $value ); | |
} | |
} | |
if ( ( $cache = wp_cache_get( $file, serialize( $cache_args ) ) ) !== false ) { | |
if ( ! empty( $template_args['return'] ) ) | |
return $cache; | |
echo $cache; | |
return; | |
} | |
} | |
$file_handle = $file; | |
do_action( 'start_operation', 'hm_template_part::' . $file_handle ); | |
if ( file_exists( get_stylesheet_directory() . '/' . $file . '.php' ) ) | |
$file = get_stylesheet_directory() . '/' . $file . '.php'; | |
elseif ( file_exists( get_template_directory() . '/' . $file . '.php' ) ) | |
$file = get_template_directory() . '/' . $file . '.php'; | |
ob_start(); | |
$return = require( $file ); | |
$data = ob_get_clean(); | |
do_action( 'end_operation', 'hm_template_part::' . $file_handle ); | |
if ( $cache_args ) { | |
wp_cache_set( $file, $data, serialize( $cache_args ), 3600 ); | |
} | |
if ( ! empty( $template_args['return'] ) ) | |
if ( $return === false ) | |
return false; | |
else | |
return $data; | |
echo $data; | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment