wp_get_canonical_url() WP 4.6.0

Отримує канонічний URL запису (поста).

Для сторінок пагінації створюється окреме посилання. Наприклад, для сторінки пагінації коментарів запису вона виглядатиме так: http://example.com/postname/comment-page-2.

Працює на основі:
get_permalink()

Повертає

Строку|false. Канонічний URL або false, якщо запис не існує або ще не опубліковано.

Використання

wp_get_canonical_url($post);
$post
(число/WP_Post)
ID або об’єкт запису.


Типово: null (поточний запис)

Приклади

0

#1 Виведемо канонічний URL запису 803

echo wp_get_canonical_url(803);
// виведе: http://wp-kama.ru/id_803/pishem-pravilnyiy-robotstxt-dlya-wordpress.html

список змін

З версії 4.6.0Введено.

Код wp_get_canonical_url() WP 6.0.2

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);

	// Якщо canonical is being generated for the current page, тому що він має pagination if needed.
	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 );
		}
	}

	/**
	 * Filters canonical URL for a post.
	 *
	 * @ Since 4.6.0
	 *
	 * @param string $canonical_url The post's canonical URL.
	 * @param WP_Post $post Post об'єкт.
	 */
	return apply_filters( 'get_canonical_url', $canonical_url, $post);
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *