##なにがあったのか
なにもしてないのに Advanced Custom Fields が壊れた
Advanced Custom Fields(以降 ACF) を使ってカスタムフィールドの設定をしていたところ、特に前触れもなくフィールドの入力欄が消えて編集できなくなった。
##20190619 追記
以下では wp-admin/load-styles.php
が悪者みたいな書き方になってしまっていたけれど、よくよくソースを読んでいると、そもそも ACF の入力項目のなかでフィールドにだけ開閉部分が用意されていないのが問題だった。
で、フィールドにだけ開閉部分が存在しない原因が以下。
#acf-field-group-fields>.handlediv,
#acf-field-group-fields>.hndle {
display: none;
}
これによってフィールドについては開閉部分が非表示になっている。
にも関わらず .closed
によって子要素が非表示になるスタイルは依然として適用されているため、.closed
がついたままになり、トグルが不可能になってしまっているということだった。罠はあらゆるところに潜んでいる
ということで修正としては functions.php
に以下のコードを追加がベターのようです。
add_action('admin_head', function () {
echo '<style>
#acf-field-group-fields>.handlediv,
#acf-field-group-fields>.hndle {
display: block !important;
}
</style>';
});
###以下は古い内容です
##解決
functions.php
に以下のコードを追加する。
add_action('admin_head', function () {
echo '<style>
.js .closed .inside {
display: block !important;
}
</style>';
});
##原因
ACF では入力欄を折りたたむことができ、そのとき要素に対して .closed
が付与される。またこの要素には子要素として .inside
というのがいる。
で、その .closed
(の中の .inside
) のスタイルが何処かからやってきた.js .closed .inside
を含んだセレクタによって display: none
とされていたのが原因だった。
なので、とりあえずの処置としてはその余計なスタイル指定を上書きして display: block
にしてやれば表示されるようになる。
そして問題の「何処かからやってきた」セレクタのソースを見ると……
wp-admin/load-styles.php
wordpress の洗礼はまだまだ続くようだ。