/ カスタムフィールドのプレフィックスを英語に指定
$prefijos_de_campo_personalizados = matriz(
// テーブル番号1に対応するフィールド(接頭辞なし)
‘Nombre_Propiedad’, ‘Precio’, ‘Unidades_Vendidas’, ‘Unidades_Total’, ‘Disposición’, ‘Área_Construcción’, ‘Área_Terreno’, ‘Ubicación’, ‘Transporte’,
‘Imagen1’, ‘Imagen2’, ‘Imagen3’, ‘Imagen4’, ‘Imagen5’, ‘Imagen6’,
‘Imagen7’, ‘Imagen8’, ‘Imagen9’, ‘Imagen10’,
‘Tipo_propiedad’, ‘Categoría_terreno’, ‘Zonificación’, ‘Planificación_urbana’, ‘Observaciones’,
// テーブル番号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’);
Guardé el código anterior en function.php pero no muestro ninguna clave o valor en mi phpadmin
Este es otro código que escribí a continuación para guardar Metabox y que funciona correctamente pero no se guarda en phpadmin.
// 画像とテキストのメタボックス
función add_custom_meta_boxes() {
globales $campos_personalizados;
// $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’);
// 画像のメタボックスのコールバック関数
función custom_image_meta_box_callback($publicación, $metabox) {
// フィールド名とその値を取得
$nombre_campo = $metabox[‘args’][‘field_name’]; // ‘Nueva-Imagen1’
$valor = get_post_meta($post->ID, $field_name, verdadero);
?>
}
// テキスト入力の為のカスタムフィールドのメタボックスのコールバック関数
función custom_field_meta_box_callback($publicación, $metabox) {
// フィールド名を取得
$nombre_campo = $metabox[‘args’][‘field_name’];
$valor = get_post_meta($post->ID, $field_name, verdadero);
?>
}
Este tema fue modificado hace 1 día, 2 horas por
.