WP_GET_CANONICAL_URL() – Функция возвращает канонический URL для поста

# 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, сохранив структуру, акцентировав внимание на коде и добавив необходимые пояснения.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *