私はWordpressのテーマTwenty Twelve(正確に言うとその子)を使用しています。
本文を開いた直後に、functions.phpに、header.phpを使用しないで、HTMLを挿入する方法を知りたいです。
それは可能ですか?
Twenty Twelveには、開始<body>
タグの直後に起動するフックはありません。
したがって、あなたはあなたの親テーマであるTwenty 12を拡張するあなたの子供のテーマで、あなたの子供のテーマディレクトリに渡ってheader.php
をコピーしてください。
あなたの子テーマでheader.php
ファイルを開き、開始bodyタグの直後にアクションフックを追加し、それをfunctions.php
ファイル経由でフックすることができます。
例えばtwenty-twelve-child/header.php
ファイルでは:
<body <?php body_class(); ?>>
<?php do_action('after_body_open_tag'); ?>
それであなたのtwenty-twelve-child/functions.php
ファイルで:
function custom_content_after_body_open_tag() {
?>
<div>My Custom Content</div>
<?php
}
add_action('after_body_open_tag', 'custom_content_after_body_open_tag');
これはHTMLに次のようにレンダリングされます。
<body>
<div>My Custom Content</div>
おすすめ読書:
https://developer.wordpress.org/reference/functions/do_action/
非常に、非常に、非常に汚れた解決策は次のようになります。
/* Insert tracking code or other stuff directly after BODY opens */
add_filter('body_class', 'wps_add_tracking_body', PHP_INT_MAX); // make sure, that's the last filter in the queue
function wps_add_tracking_body($classes) {
// close <body> tag, insert stuff, open some other tag with senseless variable
$classes[] = '"><script> /* do whatever */ </script><noscript></noscript novar="';
return $classes;
}
このコードをfunctions.phpに追加してください。
function my_function() {
echo'<div id="from_my_function"></div>';
}
add_action('wp_head', 'my_function');