web-dev-qa-db-ja.com

メディアボタンの[投稿に挿入]のタイトルを変更するにはどうすればよいですか。

実際問題はそれをすべて言う。私は自分の管理者ページにメディアアップロードボックスを統合し、 '投稿に挿入'というテキストの付いたボタンは意味がありません。むしろ「この画像を使う」のようなものに変更したいと思います。誰があなたがそうすることができるかについての手がかりを得ましたか?

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

テーマ関数ファイルをプラグインファイルに配置します。

このボタンが最初にヒットしたフィルタは、関数esc_attr()にあります。そのため、そのコードが実行するのは、esc_attr()を介して実行されるInsert into Postのインスタンスを見つけ、それをUse this imageに置き換えることです。ただし、このコードには他では望ましくない問題がある可能性があります。たぶん誰かがそれを知っているかもしれない言語ファイル方法がこれより良い解決策であるかもしれません。

TRY:

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

翻訳を考慮する必要があります。

3
Brady

WordPress 3.5以降のメディアアップローダーでは、別の方法があります。すべての文字列は、ページの下部に以下のようにローカライズされています。

<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>

document.readyでは、オブジェクトを修正します。

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

フィルタ'gettext'テキストドメインをチェックすることによってのみター​​ゲット文字列をキャッチするように注意してください。かなり冗長な例については、 この回答 を参照してください。

簡単な方法:

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;
}

これが誤検知を避ける唯一の方法です。プラグインの作成者が別の場所で同じ文字列を使用している可能性があるため、テキストドメインを確認する必要があります。

5
fuxia

警告: "attribute_escape"フックを使うのはちょっと悪いです。この関数は、投稿タイトルとコンテンツを含むすべてのテキストに対して呼び出されます。受け入れられた答えで述べられるようにこのフィルタを使用することはhtmlエンティティエンコーディングを壊します。

たとえば、タイトル「フィーチャー&プライシング」は、タイトルフィールドにフィーチャー&プライシングとして表示されます。保存した後、機能が表示されます。価格設定もう一度保存すると、機能が表示されます。価格設定.

より良い代替手段はjqueryを使ってボタンのテキストを変更することです。

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

または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