サポート » 使い方全般 » imgタグから属性を除く自作プラグインが動作しない

  • 解決済 ringnir

    (@ringnir)


    メディアギャラリーから記事へimgタグを出力する際に、classとtitle属性を削除するプラグインを試作したのですが、動作しません。

    function delete_img_class() {
    	$class = '';
    	$title = '';
    	return;
    }
    
    function remove_img_attr() {
    	$html = str_replace('class=""','',$html);
    	$html = str_replace('title=""','',$html);
    	return;
    }
    
    add_filter('get_image_tag_class','delete_img_class');
    add_filter('get_image_tag','remove_img_attr');

    どなたか、何が間違っているか教えていただけないでしょうか?

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • function remove_img_attr($html, $id, $alt, $title, $align, $size) {
      $html = preg_replace('/title=[\'"]([^\'"]+)[\'"]/i', '', $html);
      return preg_replace('/class=[\'"]([^\'"]+)[\'"]/i', '', $html);
    }
    add_filter('get_image_tag','remove_img_attr', 10, 6);
    モデレーター jim912

    (@jim912)

    ringnirさん、こんにちは。

    いろいろとおかしいのですが、その前に

    動作しません。

    だけだと、回答者がどのように動作しないのかまで想定しなくてはなりません。
    コードは提示いただいていますが、どこにどのように記述して、有効化されているのかなどの情報も有用なのです。

    まず、おかしい点としては、フィルターの記述の仕方になります。

    function remove_img_attr( $html ) {
    	$html = str_replace('class=""','',$html);
    	$html = str_replace('title=""','',$html);
    	return $html;
    }

    とフィルタリングする引数と戻り値を指定しないと、タグ自体がなくなってしまいます。

    それから、class属性の中身は、get_image_tag_classのフックで空になりますが、titleはフックされませんので、str_replaceではマッチしません。ここはpreg_replaceなどを用いる必要があるでしょう

    モデレーター jim912

    (@jim912)

    ringnirさん、こんにちは。

    先の回答で、

    str_replaceではマッチしません。ここはpreg_replaceなどを用いる必要があるでしょう

    と回答してしまいましたが、

    add_filter('get_image_tag','remove_img_attr',10,4);

    とフックさせ

    function remove_img_attr( $html, $id, $alt, $title ) {

    と複数の引数を取得するようにすれば、

    $html = str_replace(' title="' . esc_attr($title) . '"','',$html);

    で削除できますね。

    スレッド開始 ringnir

    (@ringnir)

    おふたりともありがとうございます。

    どこにどのように記述して、有効化されているのかなどの情報も有用なのです。

    すみません。これで全文なんです。単に属性を除ければいいので。
    症状は、仰る通りタグ自体が無くなってるようで、空白というか何も出力されませんでした。

    どちらの方法でも正常に属性が削除されましたが、kzさんのpreg_replaceの正規表現はまだよくわからないので、当面はjin912さんのstr_replaceのほうを使うことにします。

    ありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「imgタグから属性を除く自作プラグインが動作しない」には新たに返信することはできません。