web-dev-qa-db-ja.com

画像からtitle属性を削除

私はできればフックやフィルタを使って、画像から title 属性を削除する方法を探しています。

ほとんどのクライアントは、画像に適切なタイトルを付ける手間をかけません。そのため、この属性の目的は不要です。ランダムで説明的ではないツールチップよりもツールチップを好みません。

3
heintore

私は強くこれを思いとどまらせます。より良い、より持続可能な実践は、クライアントにtitle属性の値を教育し、適切に使用する方法を教えることです。

単にそれを取り除くことは、症状に包帯を貼ることであり、病気と戦わない

ただし、とにかく属性を削除する場合は、いくつかの方法があります。

コンテンツフィルターを使用する

投稿コンテンツは、画面に表示される前にフィルターを通過します。このフィルターはいくつかのことを行います:引用符を中括弧に変換する、WordPressでPを大文字にする、などです。また、コンテンツに存在するショートコードを処理します。

正規表現を使用して<img />タグを見つけ、title属性を削除するフィルターを介してコンテンツを渡すことができます。

プラグインを使用する

プラグインリポジトリのクイック検索で Img Title Removal が返されました。このプラグインは、まさに必要なことを行うと主張しています。コードをざっと見てみると、オプション1が正確に実行されていることがわかります。

<?php
/*
Plugin Name: Img Title Removal
Plugin URI: http://www.glauserconsulting.com/2008/11/nu-agency/
Description: Filter plugin that removes all title tags from images in posts.
Author: Ivan Glauser
Version: 0.2.1
Author URI: http://www.glauserconsulting.com
*/

add_filter('the_content', 'remove_img_titles');

function remove_img_titles($text) {

    // Get all title="..." tags from the html.
    $result = array();
    preg_match_all('|title="[^"]*"|U', $text, $result);

    // Replace all occurances with an empty string.
    foreach($result[0] as $img_tag) {
        $text = str_replace($img_tag, '', $text);
    }

    return $text;
}
?>

JavaScriptを使用する

3番目のオプションは、title属性をページにレンダリングした後に動的に削除することです。絶対に削除する必要がある場合、これはtitleがまだHTMLコードにあるため(画面用)推奨されるシステムです読者)が、ドキュメントが読み込まれると削除されるため、「ランダムな、説明的でない」ツールチップを避けることができます。

JQueryを使用すると、title属性を持つページ上のすべての<img />要素を選択して削除できます。例:

jQuery(document).ready(function($) {
    $('img[title]').each(function() { $(this).removeAttr('title'); });
});
9
EAMann

これはコアをハックすることなくnon-jsの解決策です、あなたのテーマのfunction.phpファイルでこれを試してください。

add_filter( 'wp_get_attachment_image_attributes', 'remove_image_text' );
function remove_image_text( $attr ) {
    unset( $attr['alt'] );
    unset( $attr['title']) ;
    return $attr;
}
2
ntft