Tribe__Rewrite::prepare_slug( string $slug, string $permastruct_name, string $is_regular_exp = true )
Returns a sanitized version of $slug that can be used in rewrite rules.
Contents
This is ideal for those times where we wish to support internationalized URLs (ie, where "venue" in "venue/some-slug" may be rendered in non-ascii characters).
In the case of registering new post types, $permastruct_name should generally match the CPT name itself.
Parameters
- $slug
-
(string) (Required)
- $permastruct_name
-
(string) (Required)
- $is_regular_exp
-
(string) (Optional)
Default value: true
Return
(string)
Source
File: src/Tribe/Rewrite.php
public function prepare_slug( $slug, $permastruct_name, $is_regular_exp = true ) {
$needs_handling = false;
$sanitized_slug = sanitize_title( $slug );
// Was UTF8 encoding required for the slug? %a0 type entities are a tell-tale of this
if ( preg_match( '/(%[0-9a-f]{2})+/', $sanitized_slug ) ) {
/**
* Controls whether special UTF8 URL handling is setup for the set of
* rules described by $permastruct_name.
*
* This only fires if Tribe__Events__Rewrite::prepare_slug() believes
* handling is required.
*
* @var string $permastruct_name
* @var string $slug
*/
$needs_handling = apply_filters(
'tribe_events_rewrite_utf8_handling', true, $permastruct_name, $slug
);
}
if ( $needs_handling ) {
// User agents encode things the same way but in uppercase
$sanitized_slug = strtoupper( $sanitized_slug );
// UTF8 encoding results in lots of "%" chars in our string which play havoc
// with WP_Rewrite::generate_rewrite_rules(), so we swap them out temporarily
$sanitized_slug = str_replace( '%', Tribe__Rewrite::PERCENT_PLACEHOLDER, $sanitized_slug );
}
$prepared_slug = $is_regular_exp ? preg_quote( $sanitized_slug ) : $sanitized_slug;
/**
* Provides an opportunity to modify the sanitized slug which will be used
* in rewrite rules relating to $permastruct_name.
*
* @var string $prepared_slug
* @var string $permastruct_name
* @var string $original_slug
*/
return apply_filters( 'tribe_rewrite_prepared_slug', $prepared_slug, $permastruct_name, $slug );
}