# get_category_by_path()

URL: https://chugunov.pro/api-wordpress/functions/get_category_by_path/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 2.1.0.

## Сигнатура

```php
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. Учитывайте это при использовании функции.

## Параметры

- `$category_path` `string` — обязательный. URL, содержащий слаги рубрик.
- `$full_match` `bool` — необязательный, по умолчанию `true`. Должен ли совпадать полный путь.
- `$output` `string` — необязательный, по умолчанию `OBJECT`. Требуемый тип возврата. Один из OBJECT, ARRAY_A или ARRAY_N, что соответствует объекту WP_Term, ассоциативному массиву или числовому массиву соответственно.

## Возвращаемое значение

`WP_Term|array|WP_Error|null`

## Исходный код

Файл: `wp-includes/category.php:125`

```php
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.

## Связанные

Использует: [`sanitize_title`](https://chugunov.pro/api-wordpress/functions/sanitize_title/), [`_make_cat_compat`](https://chugunov.pro/api-wordpress/functions/_make_cat_compat/), [`get_terms`](https://chugunov.pro/api-wordpress/functions/get_terms/), [`get_term`](https://chugunov.pro/api-wordpress/functions/get_term/), [`is_wp_error`](https://chugunov.pro/api-wordpress/functions/is_wp_error/).
Используется в: [`redirect_canonical`](https://chugunov.pro/api-wordpress/functions/redirect_canonical/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/get_category_by_path/
