web-dev-qa-db-ja.com

JavaScriptのコア関数を上書きする方法

最新のWPバージョン4.3.1以降、WordPressのコアJavaScriptファイルに変更があります。/wp-admin/js/edit-comments.js

376行目で、WordPress開発者は、管理パネルのコメントを一覧表示しているテーブルにいくつのテーブル列があるかのチェックを追加しました。

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

問題は、コメントにデータを追加しているときに、そのデータが実際にはテーブルに表示されることです。これにより、上記のjQueryはそれらのテーブルの列を数え、それから24のcolspanでコメントテーブルの行への応答をレンダリングします。

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

そのため、jQueryセレクターを変更し、自分のテーブルをthまたはtdのカウントから除外する必要があることがわかりました。

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

この小さなハックは予想通りに動作しますが、WordPressがアップデートをリリースするたびにこの修正を適用したくはありません。

このWordPress JavaScriptコア機能を上書きするにはどうすればよいですか? WordPressにJavaScript用のアクションやフィルタがあるかどうかわかりませんか?

それとも、私のカスタムJavaScriptをデキューしてエンキューするべきですか?

4
Becki Beckmann

できません。

JSとHTMLの操作は可能ですが、それがコーデックス、コードコメント、またはその他のコアドキュメントで「正しい方法」として明示的に文書化されていない限り、長期的な戦略としてはお勧めできません。

理論上の異論に加えて、コアファイルのデキューやバージョンのエンキューをせずに特定のJSコア関数をオーバーライドすることは、今のところ困難であるか、ほとんど不可能です。コアファイルを変更するすべてのバージョンで変更を実装する。

おそらくあなたの最良の選択肢はtracでチケットをオープンすることです、その変更があなたのコードを壊していることを説明し、そしてなぜあなたは他に選択肢がないのか。これはおそらく4.3.1では役に立ちませんが、コアをハックせずに必要なことを実行する方法についてのより良い提案を得たり、問題のあるコードを4.4に戻したりするかもしれません。

5
Mark Kaplun