122 lines
4.4 KiB
PHP
122 lines
4.4 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Methods to work with templates.
|
||
|
*
|
||
|
* @package visual-portfolio
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Visual_Portfolio_Templates
|
||
|
*/
|
||
|
class Visual_Portfolio_Templates {
|
||
|
/**
|
||
|
* Include template
|
||
|
*
|
||
|
* @param string $template_name file name.
|
||
|
* @param array $args args for template.
|
||
|
*/
|
||
|
public static function include_template( $template_name, $args = array() ) {
|
||
|
// Allow 3rd party plugin filter template args from their plugin.
|
||
|
$args = apply_filters( 'vpf_include_template_args', $args, $template_name );
|
||
|
|
||
|
if ( ! empty( $args ) && is_array( $args ) ) {
|
||
|
// phpcs:ignore WordPress.PHP.DontExtract.extract_extract
|
||
|
extract( $args );
|
||
|
}
|
||
|
|
||
|
// template in theme folder.
|
||
|
$template = locate_template( array( '/visual-portfolio/' . $template_name . '.php' ) );
|
||
|
|
||
|
// pro plugin template.
|
||
|
if ( ! $template && visual_portfolio()->pro_plugin_path && file_exists( visual_portfolio()->pro_plugin_path . 'templates/' . $template_name . '.php' ) ) {
|
||
|
$template = visual_portfolio()->pro_plugin_path . 'templates/' . $template_name . '.php';
|
||
|
}
|
||
|
|
||
|
// default template.
|
||
|
if ( ! $template ) {
|
||
|
$template = visual_portfolio()->plugin_path . 'templates/' . $template_name . '.php';
|
||
|
}
|
||
|
|
||
|
// Allow 3rd party plugin filter template file from their plugin.
|
||
|
$template = apply_filters( 'vpf_include_template', $template, $template_name, $args );
|
||
|
|
||
|
if ( file_exists( $template ) ) {
|
||
|
include $template;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Find css template file
|
||
|
*
|
||
|
* @param string $template_name file name.
|
||
|
* @return string
|
||
|
*/
|
||
|
public static function find_template_styles( $template_name ) {
|
||
|
$template = '';
|
||
|
$template_version = '';
|
||
|
|
||
|
if ( file_exists( get_stylesheet_directory() . '/visual-portfolio/' . $template_name . '.css' ) ) {
|
||
|
// Child Theme (or just theme).
|
||
|
$template = trailingslashit( get_stylesheet_directory_uri() ) . 'visual-portfolio/' . $template_name . '.css';
|
||
|
$template_version = filemtime( get_stylesheet_directory() . '/visual-portfolio/' . $template_name . '.css' );
|
||
|
} elseif ( file_exists( get_template_directory() . '/visual-portfolio/' . $template_name . '.css' ) ) {
|
||
|
// Parent Theme (when parent exists).
|
||
|
$template = trailingslashit( get_template_directory_uri() ) . 'visual-portfolio/' . $template_name . '.css';
|
||
|
$template_version = filemtime( get_template_directory() . '/visual-portfolio/' . $template_name . '.css' );
|
||
|
} elseif ( visual_portfolio()->pro_plugin_path && file_exists( visual_portfolio()->pro_plugin_path . 'templates/' . $template_name . '.css' ) ) {
|
||
|
// PRO plugin folder.
|
||
|
$template = visual_portfolio()->pro_plugin_url . 'templates/' . $template_name . '.css';
|
||
|
$template_version = filemtime( visual_portfolio()->pro_plugin_path . 'templates/' . $template_name . '.css' );
|
||
|
} elseif ( file_exists( visual_portfolio()->plugin_path . 'templates/' . $template_name . '.css' ) ) {
|
||
|
// Default file in plugin folder.
|
||
|
$template = visual_portfolio()->plugin_url . 'templates/' . $template_name . '.css';
|
||
|
$template_version = filemtime( visual_portfolio()->plugin_path . 'templates/' . $template_name . '.css' );
|
||
|
}
|
||
|
|
||
|
return array(
|
||
|
'path' => $template,
|
||
|
'version' => $template_version,
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Include template style
|
||
|
*
|
||
|
* @param string $handle style handle name.
|
||
|
* @param string $template_name file name.
|
||
|
* @param array $deps dependencies array.
|
||
|
* @param string|bool|null $ver version string.
|
||
|
* @param string $media media string.
|
||
|
*/
|
||
|
public static function include_template_style( $handle, $template_name, $deps = array(), $ver = false, $media = 'all' ) {
|
||
|
$template = visual_portfolio()->find_template_styles( $template_name );
|
||
|
$is_min = false;
|
||
|
|
||
|
// maybe find minified style.
|
||
|
if ( ! $template['path'] ) {
|
||
|
$template = visual_portfolio()->find_template_styles( $template_name . '.min' );
|
||
|
$is_min = true;
|
||
|
}
|
||
|
|
||
|
// Get dynamic version.
|
||
|
if ( ! $ver && $template['version'] ) {
|
||
|
$ver = $template['version'];
|
||
|
}
|
||
|
if ( ! $ver ) {
|
||
|
$ver = VISUAL_PORTFOLIO_VERSION;
|
||
|
}
|
||
|
|
||
|
// Allow 3rd party plugin filter template file from their plugin.
|
||
|
$template['path'] = apply_filters( 'vpf_include_template_style', $template['path'], $template_name, $deps, $ver, $media );
|
||
|
|
||
|
if ( $template['path'] ) {
|
||
|
wp_enqueue_style( $handle, $template['path'], $deps, $ver, $media );
|
||
|
wp_style_add_data( $handle, 'rtl', 'replace' );
|
||
|
|
||
|
if ( $is_min ) {
|
||
|
wp_style_add_data( $handle, 'suffix', '.min' );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|