web-dev-qa-db-ja.com

フックがないときにコアを修正するにはどうすればいいですか?

コメントフォームの<form>要素にカスタムHTML5属性を追加したいです。フォームフィールド自体はcomment_form()によって生成され、最初の<form>内に編集するためのフックがないので、これをどうやってやるのかよくわかりません? comment_form()関数全体を置き換える必要はありません。<form>にカスタム属性を追加したいだけなので、<form ... data-my-custom="my_value">のようになります。ヒント、トリック、提案は?

私はWPの最新版を実行しています(それは今自動更新します!wahoo!)。

1
Sarah Jean

そうです comment_form<form>タグをハードコードしているので、フィルタやアクションで変更することはできません。 jqueryを使用してカスタム属性を追加することは可能ですが、それはソースコードには含まれないため、ターゲットにしている可能性のある検索エンジンによって拾われることはありません。別の方法は、 関数の出力全体をバッファリングし 、検索を実行してそこで置き換えることです。このような:

ob_start ('wpse193237_add_attribute_to_form');
comment_form();
ob_end_flush();

function wpse193237_add_attribute_to_form ($buffer) {
  return (str_replace ('<form', '<form data-my-custom="my_value"', $buffer));
  }
1
cjbj