web-dev-qa-db-fra.com

Comment écraser une fonction de base JavaScript?

Depuis la plus récente version WP _, version 4.3.1, le fichier JavaScript principal de WordPress a été modifié: /wp-admin/js/edit-comments.js

À la ligne 376, le développeur WordPress a ajouté une vérification du nombre de colonnes dans le tableau répertoriant les commentaires dans le panneau d'administration.

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

Le fait est que j'ajoute des données aux commentaires et que les données sont réellement affichées dans un tableau; jQuery ci-dessus compte donc ces colonnes dans le tableau, puis renvoie la réponse à la ligne du tableau de commentaires avec une variable colspan de 24, ce qui gâche totalement la mise en page lorsque vous cliquez sur "répondre" dans la section des commentaires de l'administrateur WordPress.

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

J'ai donc compris que je devais changer le sélecteur jQuery et exclure ma table du décompte th ou td.

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

Ce petit hack fonctionne comme prévu, mais je ne souhaite pas appliquer cette modification à chaque fois que WordPress publie une mise à jour.

Comment puis-je écraser cette fonction principale WordPress JavaScript? Vous ne savez pas s'il existe des actions et des filtres pour JavaScript dans WordPress?

Ou dois-je retirer de la file d'attente et mettre en file d'attente mon code JavaScript personnalisé?

4
Becki Beckmann

Tu ne peux pas.

Bien que la manipulation de JS et HTML soit possible, elle ne peut être envisagée comme stratégie à long terme que si elle est explicitement documentée comme "la bonne manière" dans le codex, le commentaire de code ou tout autre document de base.

En plus de l'objection théorique, il est actuellement difficile, voire impossible, de remplacer certaines fonctions de base de JS sans recourir à la suppression de la file d'attente et à la mise en file d'attente de votre version, ce qui, dans la pratique, n'élimine pas la nécessité de poursuivre les modifications du fichier de base. implémenter vos modifications avec chaque version qui modifie le fichier core.

Votre meilleure option est probablement d’ouvrir un ticket sur trac, d’expliquer que le changement enfreint votre code et pourquoi vous n’avez pas d’autre alternative. Cela ne vous aidera probablement pas avec la version 4.3.1, mais vous obtiendrez peut-être une meilleure suggestion sur la façon de faire ce dont vous avez besoin sans en pirater le noyau, et peut-être que le code incriminé sera rétabli pour la version 4.4.

5
Mark Kaplun