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

  • URLをコピーしました!

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');

このコードを長らく使っておりますが、特にカスタムフィールドが消えたりすること無く過ごせています。

Webサイトやデザイン制作のことならKizinekoへご相談ください

ホームページ制作を中心に、Webサイト制作やデザイン制作等を承っています。フリーランスならではの柔軟性で、マーケティングをサポートいたします。法人・個人問わずお気軽にご相談ください。

  • URLをコピーしました!

著者情報

kizinekoのアバター kizineko Webデザイナー

制作会社での勤務を経て、2020年からフリーランスとしてWeb制作やデザイン制作の活動をしています。便利なコードやデザインに関する知識などを自分のメモやアウトプットも兼ねて発信していきます。

目次<small>(タップでジャンプ)</small>