I saved metabox but not recored in my Phpadmin
-
/ カスタムフィールドのプレフィックスを英語に指定
$custom_field_prefixes = array(
// テーブル番号1に対応するフィールド(接頭辞なし)
‘Property_Name’, ‘Price’, ‘Units_Sold’, ‘Total_Units’, ‘Layout’, ‘Building_Area’, ‘Land_Area’, ‘Location’, ‘Transport’,
‘Image1’, ‘Image2’, ‘Image3’, ‘Image4’, ‘Image5’, ‘Image6’,
‘Image7’, ‘Image8’, ‘Image9’, ‘Image10’,
‘Ownership_Type’, ‘Land_Category’, ‘Zoning’, ‘Urban_Planning’, ‘Remarks’,// テーブル番号2に対応するフィールド(接頭辞「New」) 'NewProperty_Name', 'NewPrice', 'NewUnits_Sold', 'NewTotal_Units', 'NewLayout', 'NewBuilding_Area', 'NewLand_Area', 'NewLocation', 'NewTransport', 'NewImage1', 'NewImage2', 'NewImage3', 'NewImage4', 'NewImage5', 'NewImage6', 'NewImage7', 'NewImage8', 'NewImage9', 'NewImage10', 'NewOwnership_Type', 'NewLand_Category', 'NewZoning', 'NewUrban_Planning', 'NewRemarks', // テーブル番号3に対応するフィールド(接頭辞「NewAreaImage」「NewImageDetail」) 'AreaDetail1', 'AreaDetail2', 'AreaDetail3', 'AreaDetail4', 'AreaDetail5', 'AreaDetail6', 'AreaDetail7', 'AreaDetail8', 'AreaDetail9', 'AreaDetail10', 'AreaDetail11', 'AreaDetail12', 'AreaDetail13', 'AreaDetail14', 'AreaDetail15', 'AreaDetail16', 'AreaDetail17', 'AreaDetail18', 'AreaDetail19', 'AreaDetail20', // 画像詳細関連のフィールド(接頭辞「AreaImageDetail」) 'AreaImageDetail1', 'AreaImageDetail2', 'AreaImageDetail3', 'AreaImageDetail4', 'AreaImageDetail5', 'AreaImageDetail6', 'AreaImageDetail7', 'AreaImageDetail8', 'AreaImageDetail9', 'AreaImageDetail10', 'AreaImageDetail11', 'AreaImageDetail12', 'AreaImageDetail13', 'AreaImageDetail14', 'AreaImageDetail15', 'AreaImageDetail16', 'AreaImageDetail17', 'AreaImageDetail18', 'AreaImageDetail19', 'AreaImageDetail20',
);
// すべてのPOSTデータをループして保存 foreach ($_POST as $field_name => $value) { // カスタムフィールドのプレフィックスが含まれているかチェック $has_prefix = false; foreach ($custom_field_prefixes as $prefix) { if (strpos($field_name, $prefix) === 0) { $has_prefix = true; break; } } if (!$has_prefix) { continue; // カスタムフィールドでなければスキップ } // 値をサニタイズ if (is_array($value)) { $sanitized_value = array_map('sanitize_text_field', $value); } else { $sanitized_value = sanitize_text_field($value); } // 画像フィールドの場合は画像をアップロードして保存 if (in_array($prefix, $custom_field_prefixes) && !empty($_FILES[$field_name]['tmp_name'])) { $image_file = $_FILES[$field_name]; // 画像をアップロード $uploaded_image = wp_handle_upload($image_file, array('test_form' => false)); // アップロードが成功した場合、URLを保存 if (!empty($uploaded_image['url'])) { $sanitized_value = $uploaded_image['url']; } } // ページリンクと画像プレビューのフィールドの場合は特別な処理が必要 if (strpos($field_name, 'link') !== false && strpos($field_name, 'preview') !== false) { // ページリンクの値を取得 $page_link_value = isset($_POST[str_replace('_preview', '', $field_name)]) ? $_POST[str_replace('_preview', '', $field_name)] : ''; // 画像プレビューの値を保存 update_post_meta($post_id, $field_name, $sanitized_value); // ページリンクの値を保存 update_post_meta($post_id, str_replace('_preview', '', $field_name), $page_link_value); } else { // 通常のカスタムフィールドのデータを保存 update_post_meta($post_id, $field_name, $sanitized_value); } }
}
// 投稿が保存された際にカスタムフィールドのデータを保存する
add_action(‘save_post’, ‘save_custom_fields_data’);i saved above code in function.php all but not show any key or value in my phpadmin
this is another code i typed below saving metabox which works properly but not save in phpadmin
// 画像とテキストのメタボックス
function add_custom_meta_boxes() {
global $custom_fields;// $custom_fields が配列かどうかをチェック if (is_array($custom_fields)) { foreach ($custom_fields as $field_name) { // 画像用のカスタムフィールド if (strpos($field_name, 'Image') !== false) { add_meta_box( $field_name . '_metabox', ucwords(str_replace('-', ' ', $field_name)) . ' Image', 'custom_image_meta_box_callback', array('post', 'house'), // 'post' と 'house' 両方に対応 'normal', 'high', array('field_name' => $field_name) ); } else { // テキスト用のカスタムフィールド add_meta_box( $field_name . '_metabox', ucwords(str_replace('-', ' ', $field_name)) . ' Text', 'custom_field_meta_box_callback', array('post', 'house'), // 'post' と 'house' 両方に対応 'normal', 'high', array('field_name' => $field_name) ); } } } else { // $custom_fields が配列でない場合のエラーハンドリング error_log('$custom_fields は配列ではありません。'); }
}
add_action(‘add_meta_boxes’, ‘add_custom_meta_boxes’);// 画像のメタボックスのコールバック関数
function custom_image_meta_box_callback($post, $metabox) {
// フィールド名とその値を取得
$field_name = $metabox[‘args’][‘field_name’]; // ‘New-Image1’ など
$value = get_post_meta($post->ID, $field_name, true);
?><!-- ラベルと画像の表示 --> <label for="<?php echo esc_attr($field_name); ?>"><?php echo $field_name; ?>:</label> <?php if ($value): ?> <img src="<?php echo esc_url($value); ?>" alt="<?php echo esc_attr($field_name); ?>" style="max-width: 100%; height: auto;"> <?php endif; ?> <input type="file" name="<?php echo esc_attr($field_name); ?>" id="<?php echo esc_attr($field_name); ?>" class="regular-text"> <?php
}
// テキスト入力の為のカスタムフィールドのメタボックスのコールバック関数
function custom_field_meta_box_callback($post, $metabox) {
// フィールド名を取得
$field_name = $metabox[‘args’][‘field_name’];
$value = get_post_meta($post->ID, $field_name, true);
?><!-- ラベルとテキスト入力 --> <label for="<?php echo esc_attr($field_name); ?>"><?php echo $field_name; ?>:</label> <input type="text" name="<?php echo esc_attr($field_name); ?>" id="<?php echo esc_attr($field_name); ?>" value="<?php echo esc_attr($value); ?>" class="regular-text"> <?php
}
- You must be logged in to reply to this topic.