функция
since 3.0.0
get_post_permalink()
Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.
Сигнатура
get_post_permalink( int|WP_Post $post, bool $leavename = false, bool $sample = false ): string|false
Описание
Извлекает постоянную ссылку для записи произвольного типа.
Параметры
$post
int|WP_Post
необязательный
ID записи или объект записи. По умолчанию — глобальная переменная $post.
$leavename
bool
необязательный
= false
Сохранять ли имя записи.
$sample
bool
необязательный
= false
Является ли это образцом постоянной ссылки.
Возвращаемое значение
string|false
Исходный код
wp-includes/link-template.php:324
function get_post_permalink( $post = 0, $leavename = false, $sample = false ) {
global $wp_rewrite;
$post = get_post( $post );
if ( ! $post ) {
return false;
}
$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 the permalink for a post of a 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 Is it a sample permalink.
*/
return apply_filters( 'post_type_link', $post_link, $post, $leavename, $sample );
}
История изменений
| Версия | Описание |
|---|---|
| 6.1.0 | Returns false if the post does not exist. |
| 3.0.0 | Introduced. |

