Niestandardowy metabox z przesyłaniem galerii obrazów, który nie będzie dołączał obrazów do posta
![Niestandardowy metabox z przesyłaniem galerii obrazów, który nie będzie dołączał obrazów do posta](https://oen.pl/wp-content/uploads/2023/01/apple-touch-icon@2.png)
Stworzyłem niestandardowy metaboks z programem do przesyłania obrazów, który przesyła wiele obrazów do galerii, którą mogę następnie zapytać. Wszystko działa, zaakceptuj fakt, że obrazy nie są wyświetlane jako dołączone do postu w bibliotece multimediów. Pokazują się jako niepodpięte. Jakieś pomysły ludzie?
<?php
// Add the Meta Box
function agch_properties_add_custom_meta_box() {
add_meta_box(
'custom_meta_box', // $id
'Property Photos', // $title
'agch_properties_show_custom_meta_box', // $callback
'properties', // $page
'normal', // $context
'high'); // $priority
}
add_action('add_meta_boxes', 'agch_properties_add_custom_meta_box');
// Field Array
$prefix = 'agch_properties_';
$custom_meta_fields = array(
array(
'label'=> 'Upload Images',
'desc' => 'This is the gallery images on the single item page.',
'id' => $prefix.'gallery',
'type' => 'gallery'
),
);
// The Callback
function agch_properties_show_custom_meta_box($object) {
global $custom_meta_fields, $post;
// Use nonce for verification
echo '<input type="hidden" name="custom_meta_box_nonce" value="'.wp_create_nonce(basename(__FILE__)).'" />';
// Begin the field table and loop
echo '<table class="form-table">';
foreach ($custom_meta_fields as $field) {
// get value of this field if it exists for this post
$meta = get_post_meta($post->ID, $field['id'], true);
// begin a table row with
echo '<tr>
<th><label for="'.$field['id'].'">'.$field['label'].'</label></th>
<td>';
switch($field['type']) {
case 'gallery':
$meta_html = null;
if ($meta) {
$meta_html .= '<ul class="agch_properties_gallery_list">';
$meta_array = explode(',', $meta);
foreach ($meta_array as $meta_gall_item) {
$meta_html .= '<li><div class="agch_properties_gallery_container"><span class="agch_properties_gallery_close"><img id="' . esc_attr($meta_gall_item) . '" src="' . wp_get_attachment_thumb_url($meta_gall_item) . '"></span></div></li>';
}
$meta_html .= '</ul>';
}
echo '<input id="agch_properties_gallery" type="hidden" name="agch_properties_gallery" value="' . esc_attr($meta) . '" />
<span id="agch_properties_gallery_src">' . $meta_html . '</span>
<div class="agch_gallery_button_container"><input id="agch_properties_gallery_button" type="button" value="Add Images" /></div>';
break;
} //end switch
echo '</td></tr>';
} // end foreach
echo '</table>'; // end table
}
// Save the Data
function agch_properties_save_custom_meta($post_id) {
global $custom_meta_fields;
// Verify nonce
if ($_POST && !wp_verify_nonce($_POST['custom_meta_box_nonce'], basename(__FILE__)))
return $post_id;
// Check autosave
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
return $post_id;
// Check permissions
if ('properties' == get_post_type()) {
if (!current_user_can('edit_page', $post_id))
return $post_id;
} elseif (!current_user_can('edit_post', $post_id)) {
return $post_id;
}
// Loop through meta fields
foreach ($custom_meta_fields as $field) {
$new_meta_value = esc_attr($_POST[$field['id']]);
$meta_key = $field['id'];
$meta_value = get_post_meta( $post_id, $meta_key, true );
// If theres a new meta value and the existing meta value is empty
if ( $new_meta_value && $meta_value == null ) {
add_post_meta( $post_id, $meta_key, $new_meta_value, true );
// If theres a new meta value and the existing meta value is different
} elseif ( $new_meta_value && $new_meta_value != $meta_value ) {
update_post_meta( $post_id, $meta_key, $new_meta_value );
} elseif ( $new_meta_value == null && $meta_value ) {
delete_post_meta( $post_id, $meta_key, $meta_value );
}
}
}
add_action('save_post', 'agch_properties_save_custom_meta');
function AGCH_properties_load_wp_admin_style() {
wp_enqueue_media();
wp_enqueue_script('media-upload');
wp_enqueue_style( 'AGCH_properties_admin_css', get_template_directory_uri() . '/library/css/properties_gallery_admin.css' );
wp_enqueue_script( 'AGCH_properties_admin_script', get_template_directory_uri() . '/library/js/properties_gallery_admin.js' );
}
add_action( 'admin_enqueue_scripts', 'AGCH_properties_load_wp_admin_style' );
?>