web-dev-qa-db-ja.com

エディターのコンテンツからすべての表の幅を削除します

テーブルをWordPressエディターに貼り付けると、常に_<td width="232">_のような幅になります。

テーブルがエディターに追加されたときにすべての幅を削除したいのですが。

正規表現の場合、width="([0-9]+)"のように記述します。

これを達成するにはどうすればよいですか?

2
Krystle

Table、tr、およびtdマークアップで許可されている属性をwp_ksesから変更することで、これに取り組みます。 wp_kses は、不要なタグや属性を除外するためにコンテンツで実行される関数です。 KSES Strips Evil Scriptsの略ですが、それだけではありません。

これは大きく、たまに複雑な関数ですが、除外するものを拡張または変更する場合に非常に役立ちます。

これは、unfiltered_html機能を持たないユーザーにのみ適用されることに注意してください。

wp_kses_allowed_htmlフィルターを使用すると、許可されたタグと属性を変更できます。配列構造は$allowedtags['tag_name']['attribute']なので、たとえば$allowedtags['table']['width']を探します。

function my_modify_tags( $tags, $context ) {
    if ( 'post' !== $context ) {
        return $tags;
    }
    if ( isset( $tags['table']['width'] ) ) {
        unset( $tags['table']['width'] );
    }
    if ( isset( $tags['td']['width'] ) ) {
        unset( $tags['td']['width'] );
    }
    if ( isset( $tags['th']['width'] ) ) {
        unset( $tags['th']['width'] );
    }
    return $tags;
}
add_filter( 'wp_kses_allowed_html', 'my_modify_tags', 1, 2 );

ここで$contextを使用すると、タグを変更する特定のインスタンスにこれを適用できます。 postをターゲティングすることにより、許可されたタグのこのフィルタリングされたリストを投稿コンテンツにのみ適用できます。

1
MikeNGarrett