Chèn HTML ngay sau thẻ <body>


9

Tôi đang sử dụng chủ đề Wordpress Twenty Tw 12 (chính xác là một đứa trẻ của nó).

Tôi muốn biết làm thế nào để chèn một số HTML ngay sau khi mở phần thân, chỉ trong hàm.php và không sử dụng tiêu đề.php.

Điều đó có thể không?

Câu trả lời:


19

Hai mươi mười hai không có bất kỳ móc nào bắn ra ngay sau <body>thẻ mở .

Do đó, bạn trong chủ đề con mở rộng chủ đề Twenty Tw 12 của cha mẹ, sao chép header.phptoàn bộ vào thư mục chủ đề con của bạn.

Mở header.phptệp trong chủ đề con của bạn và ngay sau khi thẻ body mở thêm một móc hành động mà sau đó bạn có thể móc vào thông qua functions.phptệp của mình .

Ví dụ trong twenty-twelve-child/header.phptệp của bạn :

<body <?php body_class(); ?>>

<?php do_action('after_body_open_tag'); ?>

Sau đó, trong twenty-twelve-child/functions.phptập tin của bạn :

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');

Điều này sau đó sẽ hiển thị trong HTML của bạn dưới dạng:

<body>
<div>My Custom Content</div>

Đề nghị đọc:

https://developer.wordpress.org/reference/fifts/do_action/

CẬP NHẬT: THÁNG 7 NĂM 2019

Theo nhận xét của Junaid Bhura từ WordPress 5.2, một chức năng trợ giúp chủ đề mới wp_body_openđã được giới thiệu nhằm mục đích sử dụng theo sở thích của các chức năng trợ giúp khác wp_headwp_footer.

Ví dụ:

<html>
  <head>

    <?php wp_head(); ?>

  </head>
  <body <?php body_class(); ?>>

    <?php wp_body_open(); ?>

     <!-- BODY CONTENT HERE -->

    <?php wp_footer(); ?>

  </body>
</html>

Trong tệp tin.php của chủ đề (hoặc phù hợp ở nơi khác)

function custom_content_after_body_open_tag() {

    ?>

    <div>My Custom Content</div>

    <?php

}

add_action('wp_body_open', 'custom_content_after_body_open_tag');

QUAN TRỌNG

Bạn nên đảm bảo rằng hook tồn tại trong chủ đề mà bạn muốn đưa vào vì điều này có thể chưa được cộng đồng chấp nhận rộng rãi.

Nếu KHÔNG , bạn vẫn sẽ cần tuân theo nguyên tắc mở rộng chủ đề với chủ đề con với ngoại lệ mà BẠN sẽ sử dụng:

<?php wp_body_open(); ?>

... thay vì OR ngoài:

<?php do_action('after_body_open_tag'); ?>

Đề nghị đọc:

https://developer.wordpress.org/reference/fifts/wp_body_open/


Cảm ơn. Tôi sẽ thử điều này. Bất kỳ cách nào khác để làm điều đó mà không cần thêm tiêu đề.php? Chẳng hạn như một cái gì đó bằng cách sử dụng preg numplace?
Ramanan

1
Ví dụ, bạn có thể nối template_includehoặc tương tự, tuy nhiên, chúng tôi khuyên bạn không nên làm điều đó bởi vì nó không chỉ không hiệu quả, nó có thể rất không đáng tin nếu có gì đó thay đổi trong cha mẹ do cập nhật. Mở rộng chủ đề gốc bằng cách sử dụng chủ đề con là cách thực hành tốt nhất, có thể dự đoán và dự kiến, cộng với nó mang lại cho bạn nhiều quyền kiểm soát, chẳng hạn như sử dụng ví dụ được hiển thị ở trên. Tuy nhiên, nếu bạn muốn sử dụng preg_replacetùy thuộc vào bạn ...
Adam

Một lần nữa xin cảm ơn. Tôi đang sử dụng mã của bạn và hoạt động tốt. Trên thực tế, câu hỏi của tôi chỉ xuất phát từ quan điểm con mà chỉ đơn giản là sử dụng hàm.php của chủ đề con. Nhưng dù sao sau khi thực hiện mã của bạn, tôi nhận ra nó đơn giản, nhẹ và đơn giản.
Ramanan

2
Kể từ WordPress 5.2, thẻ tiêu chuẩn hiện có sẵn: wp_body_open (): developer.wordpress.org/reference/fifts/wp_body_open
Junaid Bhura 26/07/19

@JunaidBhura cảm ơn bạn đã gợi ý về chủ đề cũ này. Tôi đã cập nhật ví dụ trên để giải thích về chức năng của trình trợ giúp cốt lõi mới và móc mà mau có mặt trong các chủ đề và hy vọng được áp dụng rộng rãi trong tương lai ..
Adam

3

Một giải pháp rất, rất, rất bẩn sẽ là:

/* 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;
}

+1 cảm ơn vì mẹo
Vaibhav Gupta

1

Thêm mã này vào hàm.php

function my_function() {
 echo'<div id="from_my_function"></div>';

}
add_action('wp_head', 'my_function');

13
Điều này sẽ đầu ra bên trong <head>không <body>.
cjbj

Vâng wp dường như đủ thông minh, nó thực sự được thêm vào cơ thể! Nếu đó là meta thì nó sẽ được đưa vào bên trong tiêu đề nếu không nó sẽ được hiển thị trong phần thân.
Mohamed Salem Lamiri

1
Tôi tin rằng @cjbj là chính xác. Có vẻ như đó là trình duyệt di chuyển nó vào cơ thể, không phải WordPress. Xem nguồn trên một trang nơi bạn đã chèn vào đầu và đó là nơi bạn sẽ tìm thấy nó.
Nguy hiểm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.