Lors de la modification des pièces jointes d’un message avec au moins une pièce jointe précédemment téléchargée, comment puis-je supprimer l’onglet de l’ordinateur et le rediriger vers l’onglet Galerie onglet?
Ceci est mon code actuel:
add_filter('media_upload_tabs','remove_medialibrary_tabs', 99);
function remove_medialibrary_tabs($tabs) {
if ($post_id = (isset($_REQUEST['post_id']) ? $_REQUEST['post_id'] : false)) {
if (count(get_posts("post_type=attachment&post_parent={$post_id}"))>0) {
// MY QUESTION
}
}
unset($tabs['type_url']);
unset($tabs['library']);
return $tabs;
}
Pour supprimer l'en-tête de l'ordinateur , vous devez désélectionner la clé type
de ce tableau . Cependant, cela ne supprimera pas (avec confusion) le contenu de l'onglet et, comme il s'agit de l'onglet par défaut, il l'affichera même si l'en-tête de l'onglet correspondant a disparu.
Pour changer l’onglet par défaut, vous devez accrocher le filtre media_upload_default_tab
. Ceci est appelé à plusieurs endroits. Je n’ai pas recherché dans quel cas l’appel a été effectué. J'ai donc déplacé le contrôle des pièces jointes vers une fonction distincte et réécrit votre code comme suit:
add_filter('media_upload_tabs','wpse13567_media_upload_tabs', 99);
function wpse13567_media_upload_tabs( $tabs ) {
if ( wpse13567_post_has_attachments() ) {
unset( $tabs['type'] );
}
unset( $tabs['type_url'] );
unset( $tabs['library'] );
return $tabs;
}
add_filter( 'media_upload_default_tab', 'wpse13567_media_upload_default_tab' );
function wpse13567_media_upload_default_tab( $tab )
{
if ( wpse13567_post_has_attachments() ) {
return 'gallery';
}
return $tab;
}
function wpse13567_post_has_attachments()
{
static $post_has_attachments = null;
if ( null === $post_has_attachments && $post_id = (isset($_REQUEST['post_id']) ? $_REQUEST['post_id'] : false) ) {
$post_has_attachments = count(get_posts("post_type=attachment&post_parent={$post_id}"))>0;
}
return $post_has_attachments;
}