如何更改媒体按钮中的“插入到帖子中”标题?

时间:2012-02-09 作者:Mark

事实上,这个问题说明了一切。我在我的管理页面上集成了一个媒体上传框,一个带有“插入帖子”的按钮毫无意义。我更喜欢将其改为“使用此图像”。有人知道你是如何做到这一点的吗?

5 个回复
最合适的回答,由SO网友:Scott 整理而成

add_filter("attribute_escape", "myfunction", 10, 2);
function myfunction($safe_text, $text) {
    return str_replace("Insert into Post", "Use this image", $text);
}
将的主题函数文件放在插件文件中。

此按钮点击的第一个可用过滤器位于函数上esc_attr(). 因此,该代码将要做的是查找Insert into Post 那是贯穿的esc_attr() 并将其替换为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);
}
应考虑翻译。

SO网友:brasofilo

使用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
});

SO网友:fuxia

滤器\'gettext\', 注意仅通过检查文本域来捕获目标字符串。看见this answer 对于一个相当冗长的示例。

简化方式:

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;
}
这是避免误报的唯一方法。插件作者可能在其他位置使用相同的字符串,因此您必须验证文本域。

SO网友:user2199786

警告:使用挂钩“attribute\\u escape”有点不好。此函数用于所有文本,包括帖子标题和内容。如接受的答案中所述,使用此过滤器会中断html实体编码。

例如,标题功能和;定价显示为功能和;标题字段中的定价。保存后,将显示功能(&A);amp;定价再次保存后,您将获得功能(&A);amp;amp;定价

更好的替代方法可能是使用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
}

SO网友:Benn

or via CSS

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