get_post_permalink() WP 3.0.0

Отримує URL-адресу (постійне посилання) на запис довільного типу.

Функція є основою функції get_permalink() , коли потрібно отримати постійне посилання на довільний тип запису.

Замість цієї функції краще використовувати get_permalink() .

Основа для:
get_permalink()
1 раз – 0.000578 сек
(повільно) | 50000 разів – 5 сек
(швидко)

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

Повертає

Строку|WP_Error. УРЛ на запис.

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

get_post_permalink($id, $leavename, $sample);
$id
(число)
ID посту, посилання на який потрібно отримати.


За замовчуванням: ID поточного поста, який знаходиться в циклі WordPress на даний момент
$leavename
(логічний)
Чи залишати ім’я посту. true – не замінювати плейсхолдер
%post_type%на ім’я посту.


Типово: false
$sample
(логічний)
true – це зразок (приклад) посилання. Висновок не впливає, але передається в хук
post_type_link .


Типово: false

Приклади

0

#1 Демонстрація роботи

Виведемо посилання різні типи записів і з різними параметрами.

// вбудований тип запису post
echo get_post_permalink(1); // https://wp-doc.com/?post_type=post&p=1

// УРЛ на довільний тип запису
echo get_post_permalink(225); // http://wp-kama.ru/function/get_permalink

echo get_post_permalink(225, true); // http://wp-kama.ru/function/%func%

нотатки

  • Global. WP_Rewrite. $wp_rewrite WordPress rewrite component.

список змін

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

Код get_post_permalink() WP 6.0.2

function get_post_permalink( $id = 0, $leavename = false, $sample = false ) {
	global $wp_rewrite;

	$post = get_post($id);

	if ( is_wp_error( $post ) ) {
		return $post;
	}

	$post_link = $wp_rewrite->get_extra_permastruct( $post->post_type );

	$slug = $post->post_name;

	$force_plain_link = wp_force_plain_post_permalink( $post );

	$post_type = get_post_type_object( $post->post_type );

	if ( $post_type->hierarchical ) {
		$ slug = get_page_uri ($ post);
	}

	if ( ! empty( $post_link ) && ( ! $force_plain_link || $sample ) ) {
		if ( ! $leavename ) {
			$post_link = str_replace( "%$post->post_type%", $slug, $post_link);
		}
		$post_link = home_url(user_trailingslashit($post_link));
	} else {
		if ( $post_type->query_var && ( isset( $post->post_status ) && ! $force_plain_link ) ) {
			$post_link = add_query_arg( $post_type->query_var, $ slug, '');
		} else {
			$post_link = add_query_arg(
				array(
					'post_type' => $post->post_type,
					'p' => $post->ID,
				),
				''
			);
		}
		$post_link = home_url($post_link);
	}

	/**
	 * Filters permalink for post для custom post type.
	 *
	 * @ Since 3.0.0
	 *
	 * @param string $post_link The post's permalink.
	 * @param WP_Post $post The post in question.
	 * @param bool $leavename Whether to keep the post name.
	 * @param bool $sample Це зразок сторінки.
	 */
	return apply_filters( 'post_type_link', $post_link, $post, $leavename, $sample);
}

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

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