# WP_GET_CANONICAL_URL() │ WP 4.6.0
Функция WP_GET_CANONICAL_URL() возвращает канонический URL для поста (записи).
Когда пост совпадает с запрашиваемой страницей, функция также обрабатывает параметры пагинации (например, для страниц с разбивкой на части).
### Использует
- get_permalink()
### Используется в
- rel_canonical()
### Время выполнения
- 1 раз — 0.000338 сек (быстро)
- 50000 раз — 3.05 сек (быстро)
- PHP 7.0.8, WP 4.6
## Хуки функции
- get_canonical_url
### Возврат
Возвращает строку с каноническим URL или false, если пост не существует или еще не опубликован.
## Применение
```php
wp_get_canonical_url( $post );
- $post (int|WP_Post) — ID поста или объект WP_Post.
- По умолчанию: глобальная переменная
$post.
Примеры
Пример 1: Получение канонического URL поста с ID 803
echo wp_get_canonical_url( 803 );
// вывод: http://example.com/post-name/
Изменения
- Добавлено в версии 4.6.0.
Код функции wp_get_canonical_url
function wp_get_canonical_url( $post = null ) { $post = get_post( $post ); if ( ! $post ) { return false; } if ( 'publish' !== $post->post_status ) { return false; } $canonical_url = get_permalink( $post ); // Если канонический URL генерируется для текущей страницы, // убедитесь, что он содержит пагинацию, если это необходимо. if ( get_queried_object_id() === $post->ID ) { $page = get_query_var( 'page', 0 ); if ( $page >= 2 ) { if ( ! get_option( 'permalink_structure' ) ) { $canonical_url = add_query_arg( 'page', $page, $canonical_url ); } else { $canonical_url = trailingslashit( $canonical_url ) . user_trailingslashit( $page, 'single_paged' ); } } $cpage = get_query_var( 'cpage', 0 ); if ( $cpage ) { $canonical_url = get_comments_pagenum_link( $cpage ); } } /** * Фильтрует канонический URL для поста. * * @since 4.6.0 * * @param string $canonical_url Канонический URL поста. * @param WP_Post $post Объект поста. */ return apply_filters( 'get_canonical_url', $canonical_url, $post ); }Связанные функции
comments_open()get_extended()get_lastpostdate()get_lastpostmodified()get_post_embed_html()get_post_embed_url()get_post_parent()get_post_stati()get_post_status_object()get_post_statuses()get_post_timestamp()has_post_parent()is_sticky()pings_open()post_exists()sanitize_post()the_shortlink()url_to_postid()wp_embed_register_handler()WP_Embed::delete_oembed_caches()wp_get_shortlink()wp_oembed_add_provider()wp_transition_post_status()
В этой версии текста мы сделали его более понятным для начинающих пользователей WordPress, сохранив структуру, акцентировав внимание на коде и добавив необходимые пояснения.