質問: 体に荷を積む 私は現在、google earthツアーをショートコードでwp投稿/ページに埋め込むプラグインを開発しようとしています。私が遭遇している問題は、ツアーをロードするために、onload="init()"を<body>タグに追加する必要があるということです。特定のテンプレートファイルを変更できますが、これはリリース用なので、フックを使用して動的に追加する必要があります。何か案は?
回答: jqueryでこれを行う可能性を無視することの1つは、 template_includeフィルターをフックし、コールバックでob_start() を使用することです。次のコードのように、コールバックは'<body'で文字列検索を行い、それを'<body onload="init()"'で置き換えることができます。あなたはそれをあなたのプラグインに直接ドロップすることができるはずです、ちょうどあなたのプラグイン自身の命名規則に従うように名前を変更することを忘れないでください:<?php add_filter('template_include','start_buffer_capture',1); function start_buffer_capture($template) { ob_start('end_buffer_capture'); // start page buffer return $template; } function end_buffer_capture($buffer) { return str_replace('<body','<body onload="init()"',$buffer); } 私があなたであれば、私は上記のコードがまだ完全に堅牢であるとは思いません。質問に答えるために一緒に投げただけなので、すべてのedgeのケースを処理することはできませんが、最低限、通常のケースを達成する方法を示し、次にいくつかのユースケーステストですべてを処理できます。重要なedgeのケース('<body'が大文字の場合など)