サポート » 使い方全般 » 投稿編集時にxhtml自動修正が発生するフックが知りたい

  • shokun0803

    (@shokun0803)


    自前で簡易な承認システムを運用していますが、少々不具合もありまして・・・

    ・新規作成時にはカスタムフィールドに未承認を登録して自動的に非公開
    ・承認済み状態でも投稿内容を編集した場合には更新ボタン押下時に未承認に変更して強制非公開
    のようなシステムなのですが、上記2番目の祭に(おそらくですが)投稿編集画面を開いた際にxhtml構文自動修正が入るため編集したと認識されることがあるようなのです。

    そこで、投稿編集で編集画面を開いた時にxhtml自動修正が入った場合、xhtml自動修正後のデータを編集前データとして扱いたいのですが、
    ・編集画面を開いた直後
    ・xhtml自動修正が適用された
    という状況を判断する方法、もしくはその瞬間をフックするアクションフックなどはありますでしょうか?

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター jim912

    (@jim912)

    こんにちは。

    投稿編集時の自動修正は、wp-admin/js/editor.js(コードを読みやすいのはeditor.dev.js)によるものか、htmlの入れ子がおかしく、ブラウザ自身が書き換えてしまう場合の2通りがあり得ます。

    どちらも、クライアントPC上で行われる処理であるため、基本的には修正されたものが、自動で行われたものか、手動で行われたものであるかを判別することは出来ません。

    ちなみに、editor.jsによる修正は、編集モードの変更時、データの送信時に行われていた憶えがあります。

    shokun0803

    (@shokun0803)

    なるほど。少し考え方を変えなくてはいけないようですね・・・

    実際に、現状行っている対策方法は編集画面を閉じた後(保存後)にもう一度編集画面を開き、自動修正をかけさせてしまう、と言うものです。要は承認前ならいくら修正しても問題ないので、承認前に自動修正させて保存すれば承認後に記事を開いても自動修正は入らないということですね。

    ということは、例えば保存時に自動修正かけさせることができればもう一度開きなおす手間は発生しないですよね。

    可能かどうか分かりませんが、通常修正を行った場合、本来の保存(更新)ボタンを「チェックする」などのボタンに変更し、ボタンを押すと保存をしつつもう一度編集画面を開く、再度編集画面が自動で開いた場合は本来の保存(更新)ボタンに戻す、なんて動作は難しいでしょうか?

    ブラウザが処理を行っている以上、一度編集画面を開きなおさないと自動修正は発生しないですよね?ボタンを一度押しただけで「自動修正+保存」して管理画面に戻るのならその方が楽なのですけど・・・

    モデレーター jim912

    (@jim912)

    こんにちはです。

    可能かどうか分かりませんが、通常修正を行った場合、本来の保存(更新)ボタンを「チェックする」などのボタンに変更し、ボタンを押すと保存をしつつもう一度編集画面を開く、再度編集画面が自動で開いた場合は本来の保存(更新)ボタンに戻す、なんて動作は難しいでしょうか?

    保存(更新)ボタンだけのフックは存在していなかった(2.7系くらい)と思いますので、本体を改編するか、保存のボックスごと自作して差し替えるかになると思います。

    もう一度編集画面を開くのは、デフォルトと同じ動作なのでそのままで構いませんが、ボタンを戻すための処理は、なんらかの分岐処理が必要になります。個々の投稿・ページに関する情報なので、カスタムフィールドに何らかのフラグを立てておくのが、適切かとは思いますが、ロジック的にはちょっとめんどくさいかもしれません。

    shokun0803

    (@shokun0803)

    なるほど。
    別枠で作った「チェック用」ボタンを枠ごと重ねてしまうのはありかもしれませんね。

    あとは、「チェック」とか言いながら何もせずに編集画面が開きなおされるのは不自然なので、画面上は何も変わりがないのに編集画面を開きなおしても不自然さを感じない何かを考えなくてはなのですね(汗)

    ブラウザ側で処理されているというのは正直想定外でした・・・まだまだ工夫が必要そうです。。。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「投稿編集時にxhtml自動修正が発生するフックが知りたい」には新たに返信することはできません。