みんな大好き AdvancedCustomFields
キレイで分かりやすいカスタムフィールドを
簡単に実装できるWordPressのプラグイン「AdvancedCustomFields」(以下ACF)
検索に弱いなんて弱点もあれど、愛用されている方も多いのではないでしょうか。
僕もPRO版を購入して、ありがたく活用させて頂いています。
この記事は、そんなACFのバージョン5(=PRO版)でのみ発生する妙な挙動のメモです。
画像を「完全に削除する」を押してもサムネイルが消えない
ACFで画像フィールドを作成して画像を登録。
その後、鉛筆マークをクリックして画像の編集を行ってみる。
画像のトリミングなどは問題なく行えるけど、ここで「完全に削除する」をクリック。
すると画像はなくなっているハズなのにサムネイルが出たままになる。
鉛筆マークを押すと何度でも「完全に削除する」ができてしまう。
実は、ちゃんと画像は消えているのだけど、
バツを押すかページを更新するまでそれが反映されていないみたい。
解決案
function.phpに以下を記述すれば、とりあえず動きます。
function my_acf_delete_attachment(){
?>
<script type="text/javascript">
(function($){
var open_browser = false;
var browser_index = '';
$(document).on('click','.acf-soh-target a[data-name=edit]',function(){
open_browser = true;
browser_index = $('.acf-soh-target a[data-name=edit]').index($(this));
});
$(document).on('click','.acf-field a:not([data-name=edit])',function(){
open_browser = false;
});
$(document).on('click','.delete-attachment',function(){
if(! $('.attachment-details')[0] && open_browser){
$('.media-modal-close').click();
$('.acf-soh-target a[data-name=remove]').eq(browser_index).click();
open_browser = false;
}
});
})(jQuery);
</script>
<?php
}
add_action('acf/input/admin_head','my_acf_delete_attachment');
何をしているかというと、「完全に削除する」をクリックしたら、
同時に画像のバツマークをクリックさせているだけ。
必要でないときは発動しない様に、open_browserで状況を管理しています。
とはいえ
ACFのアクションフックを使ってゴニョゴニョ…とか、
もっとスマートな方法は絶対にあると思うので思いついたら追記します。
お詳しい方がいらっしゃっていたら、どうぞ忌憚のないご意見いただけたら。
ちなみに
この挙動は公式サポートを見るに、どうも仕様らしい?
うーん、ACFのバージョン4まではこういう事は無かったので、なにか理由があるのかなあ。
じっくり調べてみます。