¿Cómo sobrescribir una función central de JavaScript?

4

Desde la versión más reciente de WP 4.3.1, hay un cambio en el archivo JavaScript principal de WordPress: /wp-admin/js/edit-comments.js

En la línea 376, el desarrollador de WordPress agregó una verificación de cuántas columnas hay en la tabla que lista los comentarios en el panel de administración.

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

Lo importante es que estoy agregando datos a los comentarios y los datos se muestran en realidad en una tabla; esto hace que el jQuery anterior cuente esas columnas de la tabla y luego la respuesta a la fila de la tabla de comentarios con un colspan de 24, lo que desordena el diseño una vez que haga clic en "responder" en la sección de comentarios del administrador de WordPress.

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

Entonces me di cuenta de que tenía que cambiar el selector jQuery y excluir a mi tabla de contar th o td .

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

Este pequeño truco funciona como se esperaba, pero no quiero aplicar esta modificación cada vez que WordPress lanza una actualización.

¿Cómo puedo sobrescribir esta función principal de WordPress JavaScript? ¿No está seguro de si hay acciones y filtros para JavaScript en WordPress?

¿O debería retirar y poner en cola mi JavaScript personalizado?

    
pregunta Becki Beckmann 20.09.2015 - 10:31

1 respuesta

5

No puedes.

Aunque es posible la manipulación de JS y HTML, no es aconsejable como estrategia a largo plazo a menos que se documente explícitamente como "la forma correcta" en el códice, el comentario de código o algún otro documento central.

Además de la objeción teórica, en este momento es difícil o casi imposible anular funciones centrales específicas de JS sin recurrir a la eliminación de archivos de base y encolar su versión, lo que en la práctica no elimina la necesidad de hacer un seguimiento de los cambios en el núcleo. archiva y vuelve a implementar tus cambios con cada versión que cambie el archivo principal.

Su mejor opción es probablemente abrir un ticket en trac, explicar que el cambio está rompiendo su código y por qué no tiene ninguna otra alternativa. Es probable que esto no le ayude con la versión 4.3.1, pero puede obtener una mejor sugerencia sobre cómo hacer lo que necesita sin hackear el núcleo, y tal vez hacer revertir el código ofensivo en 4.4.

    
respondido por el Mark Kaplun 20.09.2015 - 10:58

Lea otras preguntas en las etiquetas