web-dev-qa-db-fra.com

Désactiver complètement les pages de pièces jointes

Je voudrais désactiver toutes les pages de pièces jointes complètement. Je l'ai googlé, mais il y a juste des informations sur comment rediriger vers un post parent ou une page d'accueil . Ce n'est pas ce que j'appellerais une solution élégante. Pourquoi introduire des liens permanents inutiles qui redirigent vers la page d'accueil? Ne pourrait-il pas être complètement désactivé?

5
Maciej Krawczyk

Vous pouvez filtrer les règles de réécriture par défaut et les supprimer pour les pièces jointes:

function cleanup_default_rewrite_rules( $rules ) {
    foreach ( $rules as $regex => $query ) {
        if ( strpos( $regex, 'attachment' ) || strpos( $query, 'attachment' ) ) {
            unset( $rules[ $regex ] );
        }
    }

    return $rules;
}
add_filter( 'rewrite_rules_array', 'cleanup_default_rewrite_rules' );

N'oubliez pas de ré-enregistrer vos permaliens une fois. WordPress générera de nouvelles règles sans aucun lien avec les pièces jointes.

Maintenant, l'URL de la page de pièce jointe indique 404. Vous pouvez également ajouter cette redirection pour empêcher la page 404, elle est inutile dans ce cas. Mais je ne sais pas comment attraper la redirection - is_attachment () ne fonctionnera pas si les règles de réécriture sont supprimées.

Mettre à jour:

WordPress proposera toujours les jolies URL de la page de pièce jointe dans la boîte de dialogue Insertion de la médiathèque et de la médiathèque. Vous pouvez aussi filtrer ceci:

function cleanup_attachment_link( $link ) {
    return;
}
add_filter( 'attachment_link', 'cleanup_attachment_link' );

Dans ce cas, même lorsque vous insérez votre pièce jointe dans les publications et sélectionnez "Lien vers la page de pièce jointe", l'image sera insérée sans le lien .

6
Ihor Vorotnov