Получение ссылки для удаления поста в WordPress: функция get_delete_post_link()

Получение ссылки для удаления поста в WordPress

Функция get_delete_post_link() предназначена для получения ссылки, которая позволяет удалить пост в WordPress. Эта функция может использоваться как в цикле WordPress, так и вне его, и подходит для любого типа постов.

Описание функции

Возвращает

Функция возвращает строку или null — ссылку для удаления поста, если он существует.

Параметры функции

Функция get_delete_post_link() принимает следующие параметры:

  1. $post (int|WP_Post) — ID поста или объект поста. По умолчанию используется глобальная переменная $post.
  2. $deprecated (string) — не используется, по умолчанию пустая строка.
  3. $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, при этом обеспечивая безопасность и контроль доступа. Основная задача — убедиться, что у пользователя есть необходимые права для выполнения данного действия.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *