get_category_by_path()
Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.
Сигнатура
get_category_by_path( string $category_path, bool $full_match = true, string $output = OBJECT ): WP_Term|array|WP_Error|null
Описание
Разбивает параметр $category_path, чтобы получить слаг рубрики.
Пытается найти дочерний путь и возвращает его. Если совпадение не найдено, возвращается первая рубрика с подходящим слагом, если $full_match установлен в false. Если и это не так, возвращается null.
Также возможно, что при неудаче будет возвращён объект WP_Error. Учитывайте это при использовании функции.
Оригинал (английский)
Breaks the $category_path parameter up to get the category slug.
Tries to find the child path and will return it. If it doesn’t find a match, then it will return the first category matching slug, if $full_match, is set to false. If it does not, then it will return null.
It is also possible that it will return a WP_Error object on failure. Check for it when using this function.
Параметры
$category_path
string
обязательный
$full_match
bool
необязательный
= true
$output
string
необязательный
= OBJECT
Возвращаемое значение
WP_Term|array|WP_Error|null
Исходный код
wp-includes/category.php:125
function get_category_by_path( $category_path, $full_match = true, $output = OBJECT ) {
$category_path = rawurlencode( urldecode( $category_path ) );
$category_path = str_replace( '%2F', '/', $category_path );
$category_path = str_replace( '%20', ' ', $category_path );
$category_paths = '/' . trim( $category_path, '/' );
$leaf_path = sanitize_title( basename( $category_paths ) );
$category_paths = explode( '/', $category_paths );
$full_path = '';
foreach ( (array) $category_paths as $pathdir ) {
$full_path .= ( '' !== $pathdir ? '/' : '' ) . sanitize_title( $pathdir );
}
$categories = get_terms(
array(
'taxonomy' => 'category',
'get' => 'all',
'slug' => $leaf_path,
)
);
if ( empty( $categories ) ) {
return null;
}
foreach ( $categories as $category ) {
$path = '/' . $leaf_path;
$curcategory = $category;
while ( ( 0 !== $curcategory->parent ) && ( $curcategory->parent !== $curcategory->term_id ) ) {
$curcategory = get_term( $curcategory->parent, 'category' );
if ( is_wp_error( $curcategory ) ) {
return $curcategory;
}
$path = '/' . $curcategory->slug . $path;
}
if ( $path === $full_path ) {
$category = get_term( $category->term_id, 'category', $output );
_make_cat_compat( $category );
return $category;
}
}
// If full matching is not required, return the first cat that matches the leaf.
if ( ! $full_match ) {
$category = get_term( reset( $categories )->term_id, 'category', $output );
_make_cat_compat( $category );
return $category;
}
}
История изменений
| Версия | Описание |
|---|---|
| 2.1.0 | Introduced. |

