【WordPress】カスタムフィールドの値がクイック編集で消えてしまう対処法

WordPressで作成したカスタムフィールド(functions.php)で、保存処理の記述次第ではクイック編集時に消えてしまうことがあります。
目次(タップでジャンプ)
カスタムフィールドの値が消えてしまう原因
原因としては、カスタムフィールドの値を保存する関数はクイック編集時にも呼び出される為、クイック編集時にはカスタムフィールドの値を取得できず、空と判断され、そのままdelete_post_metaで削除してしまっているからです。
delete_post_metaを使用しなければ良い話かと思いますが、後の処理に響いてくる為削除関数は必ず使った方が良いです。
カスタムフィールドの値がクイック編集で消えてしまう対処法
カスタムフィールドの値を保存する関数を編集(functions.php)
function save_custom_fields($post_id) {
$save_fields = [
'ここにカスタムフィールドのname',
'ここにカスタムフィールドのname'
];
foreach ($save_fields as $value) {
if (isset($_POST['action']) && $_POST['action'] == 'inline-save') {
// クイック編集の場合は何もしない
return $post_id;
} elseif (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
// オートセーブの時は何もしない
return $post_id;
} elseif (isset($_POST[$value])) {
update_post_meta($post_id, $value, $_POST[$value]);
} else {
delete_post_meta($post_id, $value);
}
}
}
add_action('save_post', 'save_custom_fields');
このコードを長らく使っておりますが、特にカスタムフィールドが消えたりすること無く過ごせています。