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);
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などを用いる必要があるでしょう
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);
で削除できますね。
おふたりともありがとうございます。
どこにどのように記述して、有効化されているのかなどの情報も有用なのです。
すみません。これで全文なんです。単に属性を除ければいいので。
症状は、仰る通りタグ自体が無くなってるようで、空白というか何も出力されませんでした。
どちらの方法でも正常に属性が削除されましたが、kzさんのpreg_replaceの正規表現はまだよくわからないので、当面はjin912さんのstr_replaceのほうを使うことにします。
ありがとうございました。