サポート » 使い方全般 » 予約投稿時にカスタムフィールドの値がクリアされてしまう。

  • 解決済 toroasa

    (@toroasa)


    カスタムフィールドで専用の入力フォームを作り
    それを表示させるようにWPを構築してみたのですが

    通常投稿時は大丈夫なのですが
    予約投稿を行なうとカスタムフィールドに登録された値が
    全てクリアされてしまいます。

    原因がわからず困っております。
    何かご存知の方がおられたらご教授頂けないでしょうか?

    以下の様なソースで実装しています。

    `
    $meta_arr[‘description’] = array(‘ディスクリプション’,’single’);

    function my_meta_boxes() {
    global $post, $meta_arr;
    //metaの現在の登録値を取得(可変変数)
    foreach($meta_arr as $meta => $meta_val) {
    $true = ( $meta_val[1] == ‘single’ )? true: false;
    $val = $meta.’Val’;
    $nam = $meta.’Nam’;
    $$nam = $meta_val[0];
    $$val = get_post_meta( $post->ID, $meta, $true );
    }
    ?>
    <div>
    <table>
    <tr>
    <th><?php echo $descriptionNam ?></th>
    <td><input name=”description” type=”text” value=”<?php echo $descriptionVal ?>”></td>
    </tr>
    </table>
    </div>
    <?php
    }

    function create_meta_box() {
    if ( function_exists(‘add_meta_box’) ) {
    add_meta_box( ‘my-meta-boxes’, ‘汎用データ’, ‘my_meta_boxes’, ‘page’, ‘normal’, ‘high’ );
    }
    }

    /*** カスタムフィールド入力値の保存 ***/
    function save_postdata( $post_id ) {
    global $post, $meta_arr;
    foreach($meta_arr as $meta => $arr) {
    $true = ( $arr == ‘single’ )? true: false;
    $meta_cur = get_post_meta($post_id, $meta, $true);
    $meta_new = $_POST[$meta];

    if( $meta_cur == “” && $meta_new != “”) {
    add_post_meta($post_id, $meta, $meta_new, true);
    } elseif ( $meta_cur != $meta_new ) {
    update_post_meta($post_id, $meta, $meta_new);
    } elseif ( $meta_new == “” ) {
    delete_post_meta($post_id, $meta, get_post_meta($post_id, $meta_cur, true));
    }
    }
    }
    add_action(‘admin_menu’, ‘create_meta_box’);
    add_action(‘save_post’, ‘save_postdata’);
    `

    ご教授頂ければ幸いです。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック投稿者 toroasa

    (@toroasa)

    ロジックに不具合がありました。
    自己解決しました。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「予約投稿時にカスタムフィールドの値がクリアされてしまう。」には新たに返信することはできません。