web-dev-qa-db-fra.com

Comment supprimer des champs de Media Uploader/Gallery sur une page d'édition de type de publication personnalisée

Ce message explique comment supprimer les champs non désirés de l'utilitaire de téléchargement multimédia. Cela fonctionne très bien, mais je veux le limiter à un type personnalisé et je n'arrive pas à comprendre comment le faire. J'ai essayé le code suivant, mais cela ne semble pas fonctionner:

add_filter('attachment_fields_to_edit', 'remove_media_upload_fields', 10000, 2);
function remove_media_upload_fields( $form_fields, $post ) {
global $my_admin_page;
$screen = get_current_screen();
if ( 'slider' == $screen->post_type ){

unset( $form_fields['image-size'] );
unset( $form_fields['post_excerpt'] );
unset( $form_fields['url'] );
unset( $form_fields['image_url'] );
unset( $form_fields['align'] );

}

return $form_fields;
}

Des idées sur la façon de faire fonctionner cela?

Merci,

Moshe

1
user15927

L'écran actuel ne semble pas être défini lors de l'exécution de ce filtre, vous ne pouvez donc pas l'utiliser. En outre, le $post fait en fait référence à la pièce jointe, pas à la publication - nous ne pouvons donc pas obtenir la typographie de la publication non plus ....

Donc, regardant le code source: http://core.trac.wordpress.org/browser/tags/3.3.2/wp-admin/includes/media.php

Le filtre que vous utilisez est appelé par get_attachment_fields_to_edit, suivi de cela - nous le trouvons appelé par get_media_item.

En regardant get_media_time, il ne passe malheureusement pas l'ID ou l'objet de la publication. Cependant, il a:

$current_post_id = !empty( $_GET['post_id'] ) ? (int) $_GET['post_id'] : 0;

Cela indique que le seul moyen d'obtenir l'ID de publication (et donc le type de publication) est de le récupérer à partir de $_GET. Il serait préférable que cela soit passé avec le tableau $args qui est défini à ce moment-là.

Alors:

add_filter('attachment_fields_to_edit', 'remove_media_upload_fields', 10000, 2);
function remove_media_upload_fields( $form_fields, $post ) {
    $post_id = !empty( $_GET['post_id'] ) ? (int) $_GET['post_id'] : 0;
    $post_type = get_post_type($post_id);

    if( 'slider' == $post_type ){
        // remove unnecessary fields
        unset( $form_fields['image-size'] );
        unset( $form_fields['post_excerpt'] );
        unset( $form_fields['post_content'] );
        unset( $form_fields['url'] );
        unset( $form_fields['image_url'] );
        unset( $form_fields['align'] );
    }
    return $form_fields;
}
3
Stephen Harris