Я пытаюсь реализовать пользовательские поля в WordPress.
С чем я борюсь, так это с тем, что вы не можете использовать массивы глобально в Шаге 2.
Поскольку я не хочу переопределятьте же массивы в Step4, я хотел бы повторно использовать массивы, определенные в Step1 в Step2 и Step4.
Как я могу использовать массив step1 в step2?
// Step1.Array for using custom fields
$cf_media = array(
'cf_apple' => 'apple',
'cf_banana' => 'banana',
);
$cf_service = array(
'cf_apple' => 'apple',
'cf_melon' => 'melon',
);
// Step2.Set custom field
function adding_custom_meta_boxes($post_type, $post) {
switch ($post_type) {
case 'media':
global $cf_media; // I want to use an array globally here
add_meta_box( 'meta_info', 'media area', 'create_cf', 'media', 'normal', 'high', $cf_media );
break;
case 'service':
global $cf_service; // I want to use an array globally here
add_meta_box( 'meta_info', 'service area', 'create_cf', 'service', 'normal', 'high', $cf_service );
break;
default:
break;
}
}
add_action('add_meta_boxes', 'adding_custom_meta_boxes', 10, 2);
// Step3. Display of input area
function create_cf($post, $box) {
foreach( $box['args'] as $keyname=>$k ) {
$get_value = esc_html( get_post_meta( $post->ID, $keyname, true ) );
wp_nonce_field( 'action-' . $keyname, 'nonce-' . $keyname );
echo '<label for="' . $keyname . '">' . $k . '</label><br>';
echo '<input name="' . $keyname . '" value="' . $get_value . '" style="width: 100%;">';
}
}
/// Step4. Process to save custom field
function save_meta_field( $post_id ) {
// I hate that I have to define the same array again at this time.
// Here I want to reuse the previously defined array.
$cf_all = [
cf_apple, cf_namama, cf_melon
];
// For example : $cf_all = array_unique(array_marge($cf_media, $cf_service));
foreach( $cf_all as $d ) {
if ( isset( $_POST['nonce-' . $d] ) && $_POST['nonce-' . $d] ) {
if( check_admin_referer( 'action-' . $d, 'nonce-' . $d ) ) {
if( isset( $_POST[$d] ) && $_POST[$d] ) {
update_post_meta( $post_id, $d, $_POST[$d] );
}else{
update_post_meta( $post_id, $d, '' );
}
}
}
}
}
add_action( 'save_post', 'save_meta_field' );
Спасибо