Como sobrescrever uma função do núcleo do JavaScript?

4

Desde o mais novo WP versão 4.3.1, há uma mudança no arquivo JavaScript do WordPress: /wp-admin/js/edit-comments.js

Na linha 376, o WordPress dev adicionou uma verificação de quantas colunas da tabela existem na tabela listando os comentários no painel de administração.

colspanVal = $( 'th:visible, td:visible', c ).length;

O problema é que estou adicionando dados aos comentários e os dados são realmente exibidos em uma tabela; isso faz com que o jQuery acima conte as colunas da tabela e, em seguida, processe a resposta na linha da tabela de comentários com colspan de 24, o que estraga totalmente o layout quando você clica em 'responder' na seção de comentários do administrador do WordPress.

<tr id="replyrow" class="inline-edit-row" style="">
    <td class="colspanchange" colspan="24">
        ...
    </td>
</tr>

Então, descobri que precisava alterar o seletor do jQuery e excluir minha tabela da contagem de th ou td .

colspanVal = $( 'th:visible table:not(".timeSheetEntries"), td:visible table:not(".timeSheetEntries")', c ).length;

Esse pequeno hack funciona como esperado, mas eu não quero aplicar essa modificação toda vez que o WordPress lança uma atualização.

Como posso substituir essa função principal do JavaScript do WordPress? Não tem certeza se existem ações e filtros para JavaScript no WordPress?

Ou eu deveria destacar e enfileirar meu JavaScript personalizado?

    
por Becki Beckmann 20.09.2015 / 10:31

1 resposta

5

Você não pode.

Embora a manipulação de JS e HTML seja possível, ela não é viável como uma estratégia de longo prazo, a menos que seja explicitamente documentada como "o caminho certo" no codex, no comentário de código ou em algum outro documento principal.

Além da objeção teórica, agora é difícil ou quase impossível substituir as funções básicas específicas do JS sem recorrer a desqualificar arquivos principais e enfileirar sua versão, o que, na prática, não elimina a necessidade de acompanhar as alterações no núcleo arquivo e re implementando suas alterações com todas as versões que alteram o arquivo principal.

Sua melhor opção é provavelmente abrir um ticket no trac, explicar que a mudança está quebrando seu código e por que você não tem outra alternativa. Isso provavelmente não irá ajudá-lo com o 4.3.1, mas você pode obter uma sugestão melhor sobre como fazer o que você precisa sem invadir o núcleo, e talvez ter o código incorreto revertido para 4.4.

    
por Mark Kaplun 20.09.2015 / 10:58