Функция get_edit_post_link()
Описание
Функция get_edit_post_link()
в WordPress позволяет получить ссылку (URL) для редактирования поста в административной панели. Эта функция может использоваться как внутри цикла WordPress, так и вне его. Она поддерживает все типы постов: страницы, записи, вложения, пользовательские типы постов и ревизии.
Время выполнения:
- 1 раз — 0.000344 сек (очень быстро)
- 50000 раз — 0.95 сек (также очень быстро)
- PHP: 7.0.8, WP: 4.6.1
Возвращаемое значение
Функция возвращает строку с ссылкой на редактирование поста или null
, если указанный тип поста не существует или редактирование не разрешено.
Использование
Синтаксис
$edit_link = get_edit_post_link( $id, $context );
-
$id (int/WP_Post): ID поста или объект поста, для которого нужно получить ссылку на редактирование.
- По умолчанию используется глобальная переменная
$post
.
- По умолчанию используется глобальная переменная
-
$context (string): Контекст, в котором будет использоваться ссылка.
'display'
— амперсанд (&) будет преобразован в&
.''
— амперсанд не будет изменен.
По умолчанию: 'display'
.
Примеры использования
Пример 1: Получение ссылки на редактирование поста
echo get_edit_post_link( 1 );
- Результат:
http://example.com/wp-admin/post.php?post=1&action=edit
Пример 2: Вывод ссылки только для пользователей с правами на редактирование постов
if( current_user_can( 'edit_posts' ) ) {
echo 'Редактировать';
}
Пример 3: Полная готовая ссылка
echo 'Редактировать';
Изменения в версии
- С версии 2.3.0 — Функция была введена.
- С версии 6.3.0 — Добавлены пользовательские ссылки для типов постов
wp_navigation
,wp_template_part
, иwp_template
.
Код функции
Функция get_edit_post_link()
определена в файле wp-includes/link-template.php
:
function get_edit_post_link( $post = 0, $context = 'display' ) {
$post = get_post( $post );
if ( ! $post ) {
return;
}
if ( 'revision' === $post->post_type ) {
$action = '';
} elseif ( 'display' === $context ) {
$action = '&action=edit';
} else {
$action = '&action=edit';
}
$post_type_object = get_post_type_object( $post->post_type );
if ( ! $post_type_object ) {
return;
}
if ( ! current_user_can( 'edit_post', $post->ID ) ) {
return;
}
$link = '';
if ( 'wp_template' === $post->post_type || 'wp_template_part' === $post->post_type ) {
$slug = urlencode( get_stylesheet() . '//' . $post->post_name );
$link = admin_url( sprintf( $post_type_object->_edit_link, $post->post_type, $slug ) );
} elseif ( 'wp_navigation' === $post->post_type ) {
$link = admin_url( sprintf( $post_type_object->_edit_link, (string) $post->ID ) );
} elseif ( $post_type_object->_edit_link ) {
$link = admin_url( sprintf( $post_type_object->_edit_link . $action, $post->ID ) );
}
return apply_filters( 'get_edit_post_link', $link, $post->ID, $context );
}
Связанные функции
Функция get_edit_post_link()
может быть использована вместе с другими функциями WordPress для работы с записями и редактированием. Вот некоторые из них:
edit_post_link()
edit_comment_link()
get_delete_post_link()
get_edit_user_link()
Эти функции также могут быть полезны для работы с записями и их редактированием.