予約投稿時にカスタムフィールドの値がクリアされてしまう。
-
カスタムフィールドで専用の入力フォームを作り
それを表示させるように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’);
`ご教授頂ければ幸いです。
- トピック「予約投稿時にカスタムフィールドの値がクリアされてしまう。」には新たに返信することはできません。