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.0.2

function wp_get_shortlink( $id = 0, $context = 'post', $allow_slugs = true ) {
	/**
	 * Filters whether to preempt generating shortlink for given post.
	 *
	 * Returning a truthy value from the filter will effectively short-circuit
	 * 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, або 0 для поточного повідомлення.
	 * @param string $context Контекст для link. One of 'post' or 'query',
	 * @param bool $allow_slugs Whether to allow post slugs в 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 shortlink for a post.
	 *
	 * @ Since 3.0.0
	 *
	 * @param string $shortlink Shortlink URL.
	 * @param int $id Post ID, або 0 для поточного повідомлення.
	 * @param string $context Контекст для link. One of 'post' or 'query',
	 * @param bool $allow_slugs Whether to allow post slugs в shortlink. Заборонено використовувати.
	 */
	return apply_filters( 'get_shortlink', $shortlink, $id, $context, $allow_slugs);
}

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

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