質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

911閲覧

wordpressで記事の「変更をプレビュー」を押したときに記事内のhtmlタグに設定してあるstyle属性を外したい

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2019/07/25 02:11

やりたいこと

wordpressの記事投稿時に公開・更新ボタンを押したら記事を取得し、htmlタグにstyle属性があったら取り除くということをやりたかった。
公開・更新ボタンを押したらstyle属性を取り除くのはできたが、
「変更をプレビュー」を押したときにはstyle属性が取り除けていなかった。

やったこと

コード

function.php

add_action( 'save_post', 'delete_style' ); function delete_style() { remove_action('save_post', 'delete_style'); if(!empty($_POST['publish']) || !empty($_POST['save'])){ $subject = stripslashes($_POST['post_content']); $pattern = '/style=".*"/'; $replacement = ""; $output = preg_replace( $pattern, $replacement, $subject ); $_POST['post_content'] = $output; wp_update_post($_POST); } add_action('save_post', 'delete_style'); }

このコードだと
公開・更新したときにしか動かない

試してみたこと

function.php

add_action( 'save_post', 'delete_style' ); function delete_style() { remove_action('save_post', 'delete_style'); if(!empty($_POST['publish']) || !empty($_POST['save'])){ $subject = stripslashes($_POST['post_content']); $pattern = '/style=".*"/'; $replacement = ""; $output = preg_replace( $pattern, $replacement, $subject ); $_POST['post_content'] = $output; wp_update_post($_POST); } else { //プレビュー時 $subject = stripslashes($_POST['content']); $pattern = '/style=".*"/'; $replacement = ""; $output = preg_replace( $pattern, $replacement, $subject ); $_POST['content'] = $output; wp_update_post($_POST); } add_action('save_post', 'delete_style'); }

これで記事内の方はstyle属性を取り除けたが、プレビュー画面ではstyle属性を取り除く前が表示されてしまっている。
これを解決するには何が足りないのでしょうか?教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

方法は色々ありそうだが
一度で二度おいしい

add_filter( 'wp_insert_post_data', function( $data, $postarr ) { $content = stripslashes( $data['post_content'] ); $pattern = '/style=".*"/'; $replacement = ""; $data['post_content'] = preg_replace( $pattern, $replacement, $content ); return $data; },99 ,2 );

投稿2019/07/26 04:01

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/07/26 04:50

こんなのがあったのですね。 解決しました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問