web-dev-qa-db-fra.com

Comment modifier le titre "Insérer dans le message" dans le bouton de support?

En réalité, la question dit tout. J'ai intégré une boîte de téléchargement multimédia à ma page d'administration et un bouton avec le texte "Insérer dans le message" n'a aucun sens. J'aime plutôt le changer en quelque chose comme "Utilisez cette image". Quelqu'un a-t-il une idée de la façon dont vous pouvez le faire?

5
Mark
add_filter("attribute_escape", "myfunction", 10, 2);
function myfunction($safe_text, $text) {
    return str_replace("Insert into Post", "Use this image", $text);
}

Placez dans votre fichier de fonctions de thème ou dans un fichier de plugin.

Le premier filtre utilisable que ce bouton sélectionne est sur la fonction esc_attr(). Ce code va donc rechercher toute instance de Insert into Post exécutée via esc_attr() et la remplacer par Use this image. Ce code peut cependant avoir des problèmes indésirables ailleurs. Peut-être y a-t-il une méthode de fichier de langue que quelqu'un connaisse qui pourrait être une meilleure solution que celle-là.

TRY:

add_filter("attribute_escape", "myfunction", 10, 2);
function myfunction($safe_text, $text) {
    return str_replace(__('Insert into Post'), __('Use this image'), $text);
}

Devrait rendre compte des traductions.

3
Brady

Avec WordPress 3.5+ Media Uploader, il existe un autre moyen. Toutes les chaînes sont localisées au bas de la page avec:

<script type='text/javascript'>
/* <![CDATA[ */
var _wpMediaViewsL10n = {
    "url":"URL",
    "addMedia":"Add Media",
    "search":"Search",
    "select":"Select",
    "cancel":"Cancel",
    "selected":"%d selected",
    "dragInfo":"Drag and drop to reorder images.",
    "uploadFilesTitle":"Upload Files",
    "uploadImagesTitle":"Upload Images",
    "mediaLibraryTitle":"Media Library",
    "insertMediaTitle":"Insert Media",
    "createNewGallery":"Create a new gallery",
    "returnToLibrary":"\u2190 Return to library",
    "allMediaItems":"All media items",
    "noItemsFound":"No items found.",
    "insertIntoPost":"Insert into post",
    "uploadedToThisPost":"Uploaded to this post",
    // ET CETERA
    };
/* ]]> */
</script>

Sur document.ready, on modifie l'objet:

add_action('admin_footer', function()
{
    ?>
    <script type="text/javascript">
        // or without jQuery: http://stackoverflow.com/q/799981
        jQuery(document).ready( function($) {
            _wpMediaViewsL10n.insertIntoPost = 'Gotchya!';
        });
    </script>
    <?php
});
6
brasofilo

Filtre 'gettext', prenez soin d'attraper la chaîne cible uniquement en vérifiant le text domain . Voir cette réponse pour un exemple plutôt prolixe.

Une manière simplifiée:

add_filter( 'gettext', 'wpse_41767_change_image_button', 10, 3 );

function wpse_41767_change_image_button( $translation, $text, $domain )
{
    if ( 'default' == $domain and 'Insert into Post' == $text )
    {
        // Once is enough.
        remove_filter( 'gettext', 'wpse_41767_change_image_button' );
        return 'Use this image';
    }
    return $translation;
}

C'est le seul moyen d'éviter les faux positifs. Un auteur de plug-in peut utiliser la même chaîne à un autre emplacement. Vous devez donc vérifier le domaine de texte.

5
fuxia

ATTENTION: utiliser le hook "attribute_escape" est un peu mauvais. Cette fonction est appelée pour TOUT le texte, y compris les titres et le contenu des messages. L'utilisation de ce filtre, comme indiqué dans la réponse acceptée, rompt le codage des entités html.

Par exemple, le titre Fonctionnalités et tarification apparaît en tant que Fonctionnalités et tarification dans le champ du titre. Après l’avoir sauvegardé, il affiche Fonctions & amp; Prix Après avoir enregistré à nouveau, vous obtenez Fonctions & amp; amp; Prix.

Une meilleure alternative pourrait être d’utiliser jquery pour changer le texte du bouton.

add_action( 'admin_head', 'admin_head_script' );
function admin_head_script()
{
?>
<script>
    jQuery(document).ready(function($){
        $('input[value="Insert into Post"]').val('Use this Image');
    });
</script>
<?php
}
2
user2199786

ou via CSS

.your-media-frame .media-button-insert{
    font-size:0px;
}
.your-media-frame .media-button-insert:before{
    content:'Insert image';
    font-size:14px;
}
1
Benn