get_permalink() │ WP 1.0.0 Отримує постійне посилання на запис для подальшого використання в php.
Може бути використана за межами Цикл WordPress , для цього потрібно вказувати перший параметр – ID посту, посилання на який потрібно отримати.
Отримує URL для будь –
Примітка: Якщо не вказати параметр ID і використовувати цю функцію за межами Цикл WordPress на сторінках архівів (категорії, архів за датою, архів за авторами тощо), функція поверне посилання на останню статтю, що виводиться в Циклі поточної сторінки, а не посилання на поточну сторінку.
Примітка: Не виводить посилання на екран, а повертає його до змінної.
Основа
_ _
_ _
_ _
_ _
_ _
_ _
_
1 раз – 0.0034161 сек
(дуже повільно) | 50000 разів – 1.63 сек
(швидко) |
PHP 7.4.8, WP 5.6.2
Повертає Строку|false
. URL або false, якщо URL не вдалося отримати.
Використання $url = get_permalink( $post, $leavename );
$post
(число/об’єкт)
ID або об’єкт запису (поста), посилання на який потрібно отримати.
Типово: 0 (ID поточного поста)
$leavename
(логічний)
Не замінювати ім’я посту на засланні, тобто. не замінювати тег
%postname% на ім’я посту.
Типово: false Приклади #1 Отримаємо посилання на поточний запис Отримати посилання на пост (всередині Цикл WordPress). Оскільки функція не виводить дані, потрібно використовувати php команду echo :
Постійне посилання на пост:<br />
<?php echo get_permalink(); ?> #2 Отримуємо посилання на певні пости Виведемо список, у якому отримаємо посилання сторінки з ID 1 і 10.
Інформація про блог:
<ul>
<li><a href="<?php echo get_permalink(1); ?>">Про блог</a></li>
<li><a href="<?php echo get_permalink(10); ?>">Про автора</a></li>
</ul> #3 Використання з другим параметром Залишаємо тег %postname% незмінним, наприклад у нас у ЧПУ стоїть структура %post_id%/%postname% , тоді функція спрацює так:
<?php echo get_permalink(185, true); ?>
// виведе: http://example.com/185/%postname% Додати свій приклад
список змін Код get_permalink() get permalink WP 6.0.2 function get_permalink( $post = 0, $leavename = false ) {
$rewritecode = array(
'%year%',
'%monthnum%',
'%day%',
'%hour%',
'%minute%',
'%second%',
$leavename ? '' : '%postname%',
'%post_id%',
'%category%',
'%author%',
$leavename ? '' : '%pagename%',
);
if ( is_object( $post ) && isset( $post->filter ) && 'sample' === $post->filter ) {
$ sample = true;
} else {
$post = get_post($post);
$sample = false;
}
if ( empty( $post->ID ) ) {
return false;
}
if ( 'page' === $post->post_type ) {
return get_page_link($post, $leavename, $sample);
} elseif ( 'attachment' === $post->post_type ) {
return get_attachment_link($post, $leavename);
} elseif ( in_array( $post->post_type, get_post_types( array( '_builtin' => false ) ), true ) ) {
return get_post_permalink( $post, $leavename, $sample );
}
$permalink = get_option( 'permalink_structure');
/**
* Filters permalink structure for post для того, щоб token replacement occurs.
*
* Тільки applies to posts with post_type of 'post'.
*
* @ Since 3.0.0
*
* @param string $permalink The site's permalink structure.
* @param WP_Post $post The post in question.
* @param bool $leavename Whether to keep the post name.
*/
$permalink = apply_filters( 'pre_post_link', $permalink, $post, $leavename);
if (
$permalink &&
! wp_force_plain_post_permalink( $post )
) {
$category = '';
if ( strpos( $permalink, '%category%' ) !== false ) {
$cats = get_the_category( $post->ID );
if ($ cats) {
$cats = wp_list_sort(
$cats,
array(
'term_id' => 'ASC',
)
);
/**
* Filters the category that gets used in the %category% permalink token.
*
* @ Since 3.5.0
*
* @param WP_Term $cat Категорія для використання в програмі.
* @param array $cats Порядок всіх категорій (WP_Term objects) поєднаний з повідомленням.
* @param WP_Post $post The post in question.
*/
$category_object = apply_filters( 'post_link_category', $cats[0], $cats, $post);
$category_object = get_term( $category_object, 'category');
$category = $category_object->slug;
if ( $category_object->parent ) {
$category = get_category_parents( $category_object->parent, false, '/', true ) . $category;
}
}
// Show default category in permalinks,
// без того, щоб відобразити його explicitly.
if ( empty( $category ) ) {
$default_category = get_term( get_option( 'default_category' ), 'category' );
if ( $default_category && ! is_wp_error( $default_category ) ) {
$category = $default_category->slug;
}
}
}
$author = '';
if ( strpos( $permalink, '%author%' ) !== false ) {
$authordata = get_userdata( $post->post_author );
$author = $authordata->user_nicename;
}
// Це не є API Call, тому що Permalink є основою на stored post_date value,
/ / які повинні бути захищені як місцевий час невтішний з більшою PHP timezone.
$date = explode( ' ', str_replace( array( '-', ':' ), ' ', $post->post_date ) );
$rewritereplace = array(
$date[0],
$date[1],
$date[2],
$date[3],
$date[4],
$date[5],
$post->post_name,
$post->ID,
$category,
$author,
$post->post_name,
);
$permalink = home_url( str_replace( $rewritecode, $rewritereplace, $permalink ) );
$permalink = user_trailingslashit( $permalink, 'single');
} else { // If they're not using the fancy permalink option.
$permalink = home_url( '?p=' . $post->ID );
}
/**
* Filters permalink for a post.
*
* Тільки applies to posts with post_type of 'post'.
*
* @ Since 1.5.0
*
* @param string $permalink The post's permalink.
* @param WP_Post $post The post in question.
* @param bool $leavename Whether to keep the post name.
*/
return apply_filters( 'post_link', $permalink, $post, $leavename);
} Зв’язані функції