Suporte » Plugins » Como fazer o tratamento de erros do $wpdb

  • Resolvido Felipe Lenin

    (@felipe-lenin)


    Boa noite

    Alguem pode me ajudar, no caso eu tentei usar alguns hooks como pre_delete_term(). wp_delete_term(), mas não obtive nenhum sucesso. Então tive a ideia de criar um Term, ‘Lixeira’ e quando eu clicar para excluir ele enviar para essa lixeira como filho dela. Fiz isso usando o $wpdb->update() e funcionou, mas o maior problema é que eu to chamando essa função com um button onclick() assim:

    add_filter( "cat_notice_row_actions", 'trash_row_actions', 10, 2 );
    function trash_row_actions( $actions, $user_object ) {
        // Remove the Edit action.
        unset( $actions['delete'] );
    
        $catTrash = 10;
        $id = $user_object->term_id;
        $taxName = $user_object->taxonomy;
        $taxParent = $user_object->parent;
        $count = $user_object->count;
    
        if($user_object->slug <> 'lixeira' && $taxParent <> $catTrash){
    
            $actions['updatecat'] = "<form action='#' method='get'>
                <input type='hidden' name='taxonomy' value='$taxName'>
                <input type='hidden' name='post_type' value='noticia'>
                <input type='hidden' name='termID' value='$id'>
                <input type='hidden' name='trashID' value='$catTrash'>
                <input type='hidden' name='count' value='$count'>
                <input style='border: none!important;
                background: none!important;
                color: red!important;
                padding: 0!important;
                cursor: pointer;' class='btadd' id='$id-idcat' type='submit' value='Excluir' onclick='add_trash_bin()'>
            </form>";
    
        }
    
        return $actions;
    }

    Passando os dados via get, por que o wordpress já usa algumas coisas assim, e a função ela deveria funcionar quando clicar; mas ai que esta um dos problemas, ela só funciona se eu adicionar a função no hook admin_init só que fazendo isso ele fica me retornando a mensagem de erro. Então preciso de um help se alguém souber me ajudar a arrumar a hora correta de aparecer as msg, e a função funcionar sem o admin_init se for posssível usar sem o hook

    add_action( 'admin_init', 'add_trash_bin' );
    
    function add_trash_bin() {
        global $wpdb;
        global $pagenow;
        $table_name = $wpdb->prefix . 'term_taxonomy';
        $id = isset($_GET['termID']) ? $_GET['termID'] : NULL;
        $taxName = isset($_GET['taxonomy']) ? $_GET['taxonomy'] : NULL;
        $trashID = isset($_GET['trashID']) ? $_GET['trashID'] : NULL;
        $count = isset($_GET['count']) ? $_GET['count'] : 0;
    
        if($id <> NULL && $taxName <> NULL && $trashID <> NULL)
    
        {
            $wpdb->update(
                $table_name,
                array(
                    'parent' => $trashID,
                    'count' => 0
                ), array(
                    'term_id' => $id
                )
            );
    
            //$query = $wpdb->update($table_name, array('parent' => $trashID), array('term_id' => $id));
    
            clean_taxonomy_cache( $taxName );
    
            if($pagenow === 'edit-tags.php'){
                echo ' <div class="notice notice-success">
                        <p>Categoria alocada na Lixeira</p>
                    </div> ';
            };
    
        } else {
    
            clean_taxonomy_cache( $taxName );
    
            if($pagenow === 'edit-tags.php'){
                echo '<div class="notice notice-error">
                    <p>Esta categoria tem notícias vinculadas, desvincú-las e tente novamente</p>
                </div> ';
            };
        }
    
    }

    A página que eu preciso de ajuda: [fazer login para ver o link]

Visualizando 2 respostas - 1 até 2 (de um total de 2)
  • Que erro que te retorna?

    Dê atenção à segurança também, procure estudar sobre Nonces e também verifique se o usuário tem capacidade para deletar um termo (função current_user_can).

    Criador do tópico Felipe Lenin

    (@felipe-lenin)

    Boa tarde,

    É eu acabei fazendo um uso do cookie que é uma coisa que não gosto de fazer,
    para guardar os dados para que eu pudesse modificar o parent.
    No caso eu criei um termo Lixeira, e quando voce deletar algum termo ele simplesmente irá para a Lixeira, como filho e não sumir do banco como é padrão.

Visualizando 2 respostas - 1 até 2 (de um total de 2)
  • O tópico ‘Como fazer o tratamento de erros do $wpdb’ está fechado para novas respostas.