* Update translation text domain * Escape everything that should be escaped. * Add nonce checks where needed. * Sanitize all inputs. * Apply Code style changes across the codebase. * Correct many deprecation notices. * Optimize load order of many filters. * Add Proper Build script * Use emojii flags * Fix i18n deprecation notice for translating too early * Put all scripts in footer and load async
100 lines
2.6 KiB
PHP
100 lines
2.6 KiB
PHP
<?php
|
|
/**
|
|
* Default API hooks.
|
|
*
|
|
* @package WP_Ultimo
|
|
* @subpackage API
|
|
* @since 2.0.0
|
|
*/
|
|
|
|
namespace WP_Ultimo;
|
|
|
|
// Exit if accessed directly
|
|
defined('ABSPATH') || exit;
|
|
|
|
/**
|
|
* Adds a lighter ajax option to WP Multisite WaaS.
|
|
*
|
|
* @since 1.9.14
|
|
*/
|
|
class Views {
|
|
|
|
use \WP_Ultimo\Traits\Singleton;
|
|
|
|
/**
|
|
* Adds hooks to be added at the original instantiation.
|
|
*
|
|
* @since 1.9.0
|
|
*/
|
|
public function init(): void {
|
|
|
|
add_filter('wu_view_override', [$this, 'view_override'], 10, 3);
|
|
}
|
|
|
|
/**
|
|
* Custom locate template function that allows us to retrieve user overridden templates.
|
|
*
|
|
* This custom function is necessary instead of using locate_template because we need to retrieve
|
|
* templates while we still don't have the STYLESHEETPATH constant defined nor the TEMPLATEPATH constant.
|
|
*
|
|
* @todo Can this be improved? Do we need to re-check the Template Path in here? Not sure...
|
|
*
|
|
* @since 1.9.0
|
|
* @param string|array $template_names Template file(s) to search for, in order.
|
|
* @param bool $load If true the template file will be loaded if it is found.
|
|
* @param bool $use_require_once Whether to require_once or require. Default true. Has no effect if $load is false.
|
|
*
|
|
* @return string The template filename if one is located.
|
|
*/
|
|
public function custom_locate_template($template_names, $load = false, $use_require_once = true) {
|
|
|
|
is_multisite() && switch_to_blog(get_current_site()->blog_id);
|
|
|
|
$stylesheet_path = get_stylesheet_directory();
|
|
|
|
is_multisite() && restore_current_blog();
|
|
|
|
$located = '';
|
|
|
|
foreach ((array) $template_names as $template_name) {
|
|
if ( ! $template_name) {
|
|
continue;
|
|
}
|
|
|
|
if (file_exists($stylesheet_path . '/' . $template_name)) {
|
|
$located = $stylesheet_path . '/' . $template_name;
|
|
|
|
break;
|
|
} elseif (file_exists(get_template_directory() . '/' . $template_name)) {
|
|
$located = get_template_directory() . '/' . $template_name;
|
|
|
|
break;
|
|
} elseif (file_exists(ABSPATH . WPINC . '/theme-compat/' . $template_name)) {
|
|
$located = ABSPATH . WPINC . '/theme-compat/' . $template_name;
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ($load && '' !== $located) {
|
|
load_template($located, $use_require_once);
|
|
}
|
|
|
|
return $located;
|
|
}
|
|
|
|
/**
|
|
* Check if an alternative view exists and override
|
|
*
|
|
* @param string $original_path The original path of the view.
|
|
* @param string $view View path.
|
|
* @return string The new path.
|
|
*/
|
|
public function view_override($original_path, $view) {
|
|
|
|
$found = $this->custom_locate_template("wp-ultimo/$view.php");
|
|
|
|
return $found ?: $original_path;
|
|
}
|
|
}
|