WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

wp_get_shortlink()WP 3.0.0

Возвращает короткую ссылку на статью (пост).

Эта функция существует, чтобы создавать короткую, неизменную ссылку в шаблонах и плагинах, использовать которую можно будет вне зависимости от установленного типа ЧПУ.

Этот тег шаблона предназначен для получения короткой ссылки на пост/блог, когда на блоге включено ЧПУ (Человеко-понятные УРЛ). Такую короткую ссылку удобно использовать для размещения заметок в социальных сетях (twitter).

Такие, короткие, внешние ссылки никак отрицательно не сказывается на поисковой оптимизации (SEO), потому что при переходе по такой ссылке, поискового робота перекидывает на нормальный УРЛ с использованием 301 редиректа (указание что страница перемещена), в результате чего весь вес передается оригинальной странице.

Хуки из функции

Возвращает

Строку. Короткую ссылку или пустую строку, если короткой ссылки не существует на запрашиваемый ресурс, или если ссылка не доступна.

Использование

echo wp_get_shortlink($id, $context, $allow_slugs);
$id(число)
ID поста или блога. По умолчанию 0, значит что используется текущий блог или пост.
По умолчанию: 0 (текущий пост)
$context(строка)

Пояснение какой ID указан в параметре $id:

  • post - ID поста;
  • blog - ID блога;
  • media - медиа-файла;
  • query- будет выведена короткая ссылка текущего запроса (параметры $id и $context будут получены из текущего запроса).Если указано post (по умолчанию), то тип поста будет установлен автоматически.

По умолчанию: 'post'

$allow_slugs(логический)
Допускать ли использование слагов (альтернативных названий) в ссылках. Этот параметр предназначен для хуков и плагинов.
По умолчанию: true

Примеры

0

#1 Базовый пример

Выведем короткую ссылку на текущую статью:

echo 'Короткая ссылка: '. wp_get_shortlink();

// получим
// Короткая ссылка: http://example.com/?p=1234
0

#2 Удалим короткую ссылку из заголовков

Этот пример показывает, как удалить короткую ссылку из HEAD части документа и из заголовков ответа сервера, где также добавляется короткая ссылка:

remove_action('wp_head', 'wp_shortlink_wp_head');
remove_action('template_redirect', 'wp_shortlink_header', 11);

Список изменений

С версии 3.0.0 Введена.

Код wp_get_shortlink() WP 6.4.3

function wp_get_shortlink( $id = 0, $context = 'post', $allow_slugs = true ) {
	/**
	 * Filters whether to preempt generating a shortlink for the given post.
	 *
	 * Returning a value other than false from the filter will short-circuit
	 * the shortlink generation process, returning that value instead.
	 *
	 * @since 3.0.0
	 *
	 * @param false|string $return      Short-circuit return value. Either false or a URL string.
	 * @param int          $id          Post ID, or 0 for the current post.
	 * @param string       $context     The context for the link. One of 'post' or 'query',
	 * @param bool         $allow_slugs Whether to allow post slugs in the shortlink.
	 */
	$shortlink = apply_filters( 'pre_get_shortlink', false, $id, $context, $allow_slugs );

	if ( false !== $shortlink ) {
		return $shortlink;
	}

	$post_id = 0;
	if ( 'query' === $context && is_singular() ) {
		$post_id = get_queried_object_id();
		$post    = get_post( $post_id );
	} elseif ( 'post' === $context ) {
		$post = get_post( $id );
		if ( ! empty( $post->ID ) ) {
			$post_id = $post->ID;
		}
	}

	$shortlink = '';

	// Return `?p=` link for all public post types.
	if ( ! empty( $post_id ) ) {
		$post_type = get_post_type_object( $post->post_type );

		if ( 'page' === $post->post_type && get_option( 'page_on_front' ) == $post->ID && 'page' === get_option( 'show_on_front' ) ) {
			$shortlink = home_url( '/' );
		} elseif ( $post_type && $post_type->public ) {
			$shortlink = home_url( '?p=' . $post_id );
		}
	}

	/**
	 * Filters the shortlink for a post.
	 *
	 * @since 3.0.0
	 *
	 * @param string $shortlink   Shortlink URL.
	 * @param int    $id          Post ID, or 0 for the current post.
	 * @param string $context     The context for the link. One of 'post' or 'query',
	 * @param bool   $allow_slugs Whether to allow post slugs in the shortlink. Not used by default.
	 */
	return apply_filters( 'get_shortlink', $shortlink, $id, $context, $allow_slugs );
}
6 комментариев
    Войти