Tenga en cuenta el siguiente código en mi archivo functions.php:
add_filter( 'attachment_fields_to_edit', function($form_fields, $post){
$post_mime_type = (
get_post_mime_type( $post ) == 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' ||
get_post_mime_type( $post ) == 'application/msword'
) ? 1 : 0;
if ( $post_mime_type == 1) {
$ilm = get_post_meta( $post->ID, 'is_latest', true );
$checked = ($ilm == "1" ? 'checked="checked"' : '');
$form_fields['is_latest'] = array(
'label' => '<b">Latest?</b>',
'input' => 'html',
'html' => "<input type=\"checkbox\"
name=\"attachments[{$post->ID}][is_latest]\"
id=\"attachments[{$post->ID}][is_latest]\"
value=\"1\" {$checked}/><br />");
return $form_fields;
}
}, null, 2 );
add_filter("attachment_fields_to_save", function($post, $attachment){
if($attachment['is_latest'] == "1") {
$args = array( 'post_type' => 'attachment');
$attachments = get_posts( $args );
if ( $attachments ) {
foreach ( $attachments as $a ) {
update_post_meta($a->ID, 'is_latest', 0);
}
}
update_post_meta($post['ID'], 'is_latest', 1);
} else {
update_post_meta($post['ID'], 'is_latest', 0);
}
}, null , 2);
add_filter("wp_ajax_save-attachment-compat", function(){
$post_id = $_POST['id'];
if(($_POST['attachments'][$post_id]['is_latest']) == "1") {
$args = array( 'post_type' => 'attachment');
$attachments = get_posts( $args );
if ( $attachments ) {
foreach ( $attachments as $a ) {
update_post_meta($a->ID, 'is_latest', 0);
}
}
update_post_meta($post_id, 'is_latest', 1);
} else {
update_post_meta($post_id, 'is_latest', 0);
}
clean_post_cache($post_id);
}, 1, 0);
Lo que estoy tratando de hacer es permitir que se carguen varios documentos de Word, pero para que el usuario seleccione una versión "más reciente". Este código funciona bien para lograrlo mediante el uso de un meta campo personalizado en el archivo adjunto. Sin embargo, en la interfaz de administración, a Wordpress le gusta guardar a medida que avanza a través de AJAX, que guarda pero no vuelve a cargar otras metas de archivos adjuntos, que es la funcionalidad requerida. Así que ahora, efectivamente, quiero, en la parte inferior de mi filtro wp_ajax_save-attachment-compat
, ejecutar una solicitud AJAX para actualizar mis archivos adjuntos a la vista. He encontrado la acción AJAX "archivos adjuntos de consulta" que luego se usa en el método JS Attachments.sync
, pero estoy realmente luchando para encontrar una manera de cómo vincularlos.
Saludos