Поддержка Проблемы и решения Удаление остатков данных от кастомного поста

  • Решено CrazyWu

    (@crazywu)


    пытаюсь написать плагин, который бы удалял дополнительные данные из базы и файлы относящиеся к кастомному посту, при удалении данного поста через админку (wp-admin/edit-tags.php).

    сейчас код выглядит так

    add_action( 'delete_post', 'kg_delete_post' );
    
    function kg_delete_post($postId) {
    
        $post = get_post($postId);
    
        if ($post->post_type != 'attachment') {
            return false;
        }
    
        $url = str_replace($dirs['baseurl'],'',$post->guid);
        $urlParts = explode("/",$url);
        $numberOfParts = sizeof($urlParts) - 1;
    
        $dirs = wp_upload_dir();
        $fileNameParts = explode(".", $urlParts[$numberOfParts]);
        $fileName = str_replace('.' . end($fileNameParts), '', $urlParts[$numberOfParts]) . "-*." . end($fileNameParts);
        $path =$dirs['basedir'] ."/".  $urlParts[$numberOfParts-2] . "/" . $urlParts[$numberOfParts-1] . "/";
        $fullPath = $path  . $urlParts[$numberOfParts];
        $fullPathSearch = $path . $fileName;
    
        @unlink($fullPath);
        foreach (glob($fullPathSearch) as $filename) {
            @unlink($path . $filename);
        }
    }

    Он срабатывает при вызове wp_delete_post($Id, true), но не срабатывает при клике в админке.

    На сколько я понимаю, я не правильно определяю событие в add_action, но я не смог найти нужное.

    Буду рад советам, заранее спасибо

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Могу поделиться малым (что еще помню 🙂
    1. Экшн delete_post отрабатывает после полного удаления поста/страницы. Если мы в админке нажимаем «Удалить», то пост/страница сначала попадают в trash (корзину), а там другой хук.
    2. Есть пример http://codex.wordpress.org/Plugin_API/Action_Reference/delete_post Может вам оттолкнуться от него?
    3. Вот это

    if ($post->post_type != 'attachment') {
        return false;
    }

    «пропускает» дальше только attachment (или от жары забыл PHP :).
    4. Можете просмотреть все хуки и их краткое описание на этой страничке http://codex.wordpress.org/Plugin_API/Action_Reference#Post.2C_Page.2C_Attachment.2C_and_Category_Actions_.28Admin.29
    5. Хотел что-то еще написать, но забыл пока писал предыдущее ))) жара, понимаете ли..

    Еще не забывайте о ролях и возможностях пользователей, не каждый может удалять посты, страницы, аттачменты и тп.. А для кастомных могут быть определены свои роли-возможности..

    В общем там есть большая проблема вордпресса. Дело в том, что кастомные посты не попадают в корзину.

    Решил совсем другим путем, подгрузил свой js который по другому обрабатывает нажатие кнопки delete в админке. Ну а дальше все просто.

    кастомные посты не попадают в корзину.

    Ошеломили настолько, что решил проверить 🙂
    Ответ: как и всё бумажное, кастомы идут через корзину !)

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «Удаление остатков данных от кастомного поста» закрыта для новых ответов.