Extracted the template path tokenization so that it can be applied to more than one define more readily
This commit is contained in:
parent
91c608f38e
commit
e270dfce2e
|
@ -150,6 +150,42 @@ function wc_update_order( $args ) {
|
||||||
return wc_create_order( $args );
|
return wc_create_order( $args );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Given a path, this will convert any of the subpaths into their corresponding tokens.
|
||||||
|
*
|
||||||
|
* @since 4.1.0
|
||||||
|
* @param string $path The absolute path to tokenize.
|
||||||
|
* @param array $path_tokens An array keyed with the token, containing paths that should be replaced.
|
||||||
|
* @return string The tokenized path.
|
||||||
|
*/
|
||||||
|
function wc_tokenize_path( $path, $path_tokens ) {
|
||||||
|
foreach ( $path_tokens as $token => $token_path ) {
|
||||||
|
if ( 0 !== strpos( $path, $token_path ) ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$path = str_replace( $token_path, '{{' . $token . '}}', $path );
|
||||||
|
}
|
||||||
|
|
||||||
|
return $path;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Given a tokenized path, this will expand the tokens to their full path.
|
||||||
|
*
|
||||||
|
* @since 4.1.0
|
||||||
|
* @param string $path The absolute path to expand.
|
||||||
|
* @param array $path_tokens An array keyed with the token, containing paths that should be expanded.
|
||||||
|
* @return string The absolute path.
|
||||||
|
*/
|
||||||
|
function wc_untokenize_path( $path, $path_tokens ) {
|
||||||
|
foreach ( $path_tokens as $token => $token_path ) {
|
||||||
|
$path = str_replace( '{{' . $token . '}}', $token_path, $path );
|
||||||
|
}
|
||||||
|
|
||||||
|
return $path;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get template part (for templates like the shop-loop).
|
* Get template part (for templates like the shop-loop).
|
||||||
*
|
*
|
||||||
|
@ -188,21 +224,24 @@ function wc_get_template_part( $slug, $name = '' ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Don't cache the absolute path so that it can be shared between web servers with different paths.
|
// Don't cache the absolute path so that it can be shared between web servers with different paths.
|
||||||
if ( 0 === strpos( $template, ABSPATH ) ) {
|
$cache_path = wc_tokenize_path(
|
||||||
$template = str_replace( ABSPATH, '{{ABSPATH}}', $template );
|
$template,
|
||||||
}
|
array(
|
||||||
|
'ABSPATH' => ABSPATH,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
if ( 0 === strpos( $template, WC_ABSPATH ) ) {
|
wp_cache_set( $cache_key, $cache_path, 'woocommerce' );
|
||||||
$template = str_replace( WC_ABSPATH, '{{WC_ABSPATH}}', $template );
|
} else {
|
||||||
}
|
// Make sure that the absolute path to the template is resolved.
|
||||||
|
$template = wc_untokenize_path(
|
||||||
wp_cache_set( $cache_key, $template, 'woocommerce' );
|
$template,
|
||||||
|
array(
|
||||||
|
'ABSPATH' => ABSPATH,
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure that the absolute path to the template is resolved.
|
|
||||||
$template = str_replace( '{{ABSPATH}}', ABSPATH, $template );
|
|
||||||
$template = str_replace( '{{WC_ABSPATH}}', WC_ABSPATH, $template );
|
|
||||||
|
|
||||||
// Allow 3rd party plugins to filter template file from their plugin.
|
// Allow 3rd party plugins to filter template file from their plugin.
|
||||||
$template = apply_filters( 'wc_get_template_part', $template, $slug, $name );
|
$template = apply_filters( 'wc_get_template_part', $template, $slug, $name );
|
||||||
|
|
||||||
|
@ -227,17 +266,24 @@ function wc_get_template( $template_name, $args = array(), $template_path = '',
|
||||||
$template = wc_locate_template( $template_name, $template_path, $default_path );
|
$template = wc_locate_template( $template_name, $template_path, $default_path );
|
||||||
|
|
||||||
// Don't cache the absolute path so that it can be shared between web servers with different paths.
|
// Don't cache the absolute path so that it can be shared between web servers with different paths.
|
||||||
if ( 0 === strpos( $template, ABSPATH ) ) {
|
$cache_path = wc_tokenize_path(
|
||||||
// Use a token that we can easily replace.
|
$template,
|
||||||
$template = str_replace( ABSPATH, '{{ABSPATH}}', $template );
|
array(
|
||||||
}
|
'ABSPATH' => ABSPATH,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
wp_cache_set( $cache_key, $template, 'woocommerce' );
|
wp_cache_set( $cache_key, $cache_path, 'woocommerce' );
|
||||||
|
} else {
|
||||||
|
// Make sure that the absolute path to the template is resolved.
|
||||||
|
$template = wc_untokenize_path(
|
||||||
|
$template,
|
||||||
|
array(
|
||||||
|
'ABSPATH' => ABSPATH,
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure that the absolute path to the template is resolved.
|
|
||||||
$template = str_replace( '{{ABSPATH}}', ABSPATH, $template );
|
|
||||||
|
|
||||||
// Allow 3rd party plugin filter template file from their plugin.
|
// Allow 3rd party plugin filter template file from their plugin.
|
||||||
$filter_template = apply_filters( 'wc_get_template', $template, $template_name, $args, $template_path, $default_path );
|
$filter_template = apply_filters( 'wc_get_template', $template, $template_name, $args, $template_path, $default_path );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue