Получение ссылки для удаления поста в WordPress
Функция get_delete_post_link()
предназначена для получения ссылки, которая позволяет удалить пост в WordPress. Эта функция может использоваться как в цикле WordPress, так и вне его, и подходит для любого типа постов.
Описание функции
Возвращает
Функция возвращает строку или null
— ссылку для удаления поста, если он существует.
Параметры функции
Функция get_delete_post_link()
принимает следующие параметры:
- $post (
int|WP_Post
) — ID поста или объект поста. По умолчанию используется глобальная переменная$post
. - $deprecated (
string
) — не используется, по умолчанию пустая строка. - $force_delete (
bool
) — еслиtrue
, пост будет удалён без помещения в корзину. По умолчаниюfalse
.
Примеры использования
Простой пример
Для получения ссылки на удаление поста со специфическим ID, используйте:
echo get_delete_post_link( 1 );
Результат: Эта строка вернёт URL для удаления поста с ID 1, например:
http://example.com/wp-admin/post.php?post=1&action=delete&_wpnonce=d21da8cad3
Ссылка на удаление поста
Чтобы создать ссылку для удаления поста и отобразить её на странице, используйте следующий код:
echo 'удалить пост';
Условное отображение ссылки
Если вы хотите отобразить ссылку только у пользователей, которые имеют право на удаление постов, используйте:
if( current_user_can( 'delete_posts' ) ) {
echo 'Удалить без восстановления';
}
Как это работает
Функция get_delete_post_link()
проверяет, существует ли пост и имеет ли пользователь права для его удаления. Если всё в порядке, генерируется ссылка для удаления поста. Если пост находится в корзине или если заданы определённые условия, ссылка будет вести на удаление, а не перемещение в корзину.
Код функции
Вот как выглядит код функции:
function get_delete_post_link( $post = 0, $deprecated = '', $force_delete = false ) {
if ( ! empty( $deprecated ) ) {
_deprecated_argument( FUNCTION, '3.0.0' );
}
$post = get_post( $post );
if ( ! $post ) {
return;
}
$post_type_object = get_post_type_object( $post->post_type );
if ( ! $post_type_object ) {
return;
}
if ( ! current_user_can( 'delete_post', $post->ID ) ) {
return;
}
$action = ( $force_delete || ! EMPTY_TRASH_DAYS ) ? 'delete' : 'trash';
$delete_link = add_query_arg( 'action', $action, admin_url( sprintf( $post_type_object->_edit_link, $post->ID ) ) );
return apply_filters( 'get_delete_post_link', wp_nonce_url( $delete_link, "$action-post_{$post->ID}" ), $post->ID, $force_delete );
}
Заключение
Использование функции get_delete_post_link()
позволяет управлять удалением постов в WordPress, при этом обеспечивая безопасность и контроль доступа. Основная задача — убедиться, что у пользователя есть необходимые права для выполнения данного действия.