web-dev-qa-db-fra.com

Insérer un support - Pièce jointe - Lien vers: Supprimer l'option "page de pièce jointe"

Je souhaite supprimer l'option pièce jointe de la sélection du lien de la pièce jointe.

Je ne veux pas toujours dire à mes clients d'éviter de choisir cette option, je veux simplement la supprimer. Mais je ne suis pas assez programmeur pour le faire. Les options Fichier de média, URL personnalisée et Aucune sont utiles et doivent rester.

Est-ce que quelqu'un sait comment ne supprimer que l'option pièce jointe option?

3
Sofian

Ces options sont codées en dur dans le modèle de média tmpl-attachment-display-settingsUnderscore dans le fichier /wp-includes/media-template :

<script type="text/html" id="tmpl-attachment-display-settings">
    <h3><?php _e('Attachment Display Settings'); ?></h3>
    ...cut...
    <select class="link-to"             
            data-setting="link"
            <# if ( data.userSettings && ! data.model.canEmbed ) { #>
                data-user-setting="urlbutton"
            <# } #>>

        <# if ( data.model.canEmbed ) { #>
            <option value="embed" selected>
                <?php esc_attr_e('Embed Media Player'); ?>
            </option>
            <option value="file">
        <# } else { #>
            <option value="file" selected>
        <# } #>
        <# if ( data.model.canEmbed ) { #>
            <?php esc_attr_e('Link to Media File'); ?>
        <# } else { #>
            <?php esc_attr_e('Media File'); ?>
        <# } #>
            </option>
            <option value="post">
            <# if ( data.model.canEmbed ) { #>
                <?php esc_attr_e('Link to Attachment Page'); ?>
            <# } else { #>
                <?php esc_attr_e('Attachment Page'); ?>
            <# } #>
            </option>
            <# if ( 'image' === data.type ) { #>
                <option value="custom">
                    <?php esc_attr_e('Custom URL'); ?>
                </option>
                <option value="none">
                      <?php esc_attr_e('None'); ?>
                </option>
            <# } #>
        </select>
        ...cut...
</script>

Vous pouvez toujours remplacer le modèle en ajoutant votre propre modèle personnalisé, mais je ne suis pas sûr de sa stabilité, en ce qui concerne les modifications à venir.

Si votre option image_default_link_type est par exemple définie sur file et non pas post, vous pouvez alors essayer de masquer l'option page de pièce jointe avec des hacks CSS comme:

/**
 * Hide the 'attachment page' option from the attachment link selection.
 * @see http://wordpress.stackexchange.com/a/173027/26350
 */
add_action( 'print_media_templates', function(){
    echo '<style>.post-php select.link-to option[value="post"] {display:none;}</style>';
});

Alors les options de lien seraient:

Avant:

Before

Après:

Hide attachment page option

Mettre à jour:

En réponse au commentaire, nous pouvons gérer à la fois les dialogues Ajouter- et Éditer Image Media sur l'écran d'édition post-édition avec:

/**
 * Hide the 'Attachment Page' option for the link-to part.
 */

add_action( 'print_media_templates', function(){
    echo '
        <style>       
            .setting select.link-to option[value="post"],
            .setting select[data-setting="link"] option[value="post"] 
            { display: none; }
        </style>';
});
6
birgire