Crochet WordPress directement après le body tag

j'ai du mal à trouver le bon crochet pour utiliser mon plugin. Ce que j'essaie de faire est d'ajouter un message en haut de chaque page par le fait d'avoir mon plugin ajouter une fonction. Quel est le meilleur crochet à utiliser? Je veux insérer du contenu à droite après le <body> balise.

EDIT: je sais que c'est 3 ans plus tard maintenant, mais voici un trac billet pour n'importe qui qui est intéressé: http://core.trac.wordpress.org/ticket/12563

18
demandé sur gunr2171 2010-08-27 09:20:45

7 réponses

C'est assez difficile... La plupart des thèmes n'ont pas de crochets dans ce domaine. Vous pouvez connecter une solution javascript/html dans wp_footer et l'afficher en haut de la page... une sorte de comment Stack Overflow le fait, ou comment Twitter fait ses notifications.

C'est la meilleure référence pour tous les crochets inclus dans WordPress: http://adambrown.info/p/wp_hooks/

10
répondu jdp 2010-08-27 05:25:42

alternativement, si vous créez le thème vous-même et/ou pouvez le modifier, vous pouvez créer une action vous-même en utilisant WordPress' do_action fonction. C'est aussi comme ça qu'ils créent leurs autres crochets. Donc en gros dans votre thème, vous allez où vous voulez, juste après le <body> balise, et faire quelque chose comme:

do_action('after_body');

vous pouvez également passer des arguments à l'action callback, voir la documentation liée pour plus d'informations.

Puis, ensuite, vous utiliserait simplement le add_action fonction d'accrocher sur.

add_action('after_body', 'my_callback');

j'Espère que vous aide. Désolé si j'ai mal compris.

32
répondu Jorge Israel Peña 2010-08-27 05:31:39

créer un crochet personnalisé est vraiment facile dans Wordpress. header.php (ou n'importe où vous pourriez avoir besoin d'un crochet) localisation:

<body <?php body_class(); ?>>
<div id="body-container">

et:

<body <?php body_class(); ?>>
<?php body_begin(); ?>
<div id="body-container">

C'est notre hook, maintenant faisons en sorte que ça marche. functions.php ajouter:

function body_begin() {
do_action('body_begin');
}

maintenant hook est prêt à utiliser, ajoutez simplement toutes les actions dont vous avez besoin dans functions.php:

function my_function() {
/* php code goes here */
}
add_action('body_begin', 'my_function');

ou javascript (code de suivi etc - ce n'est pas la solution parfaite, mais c'est une meilleure pratique de charger javascript à partir de .js File, mais il est certainement mieux que l'ajout de javascript directement aux fichiers de modèle):

function my_function() { ?>
<script>
<!-- javascript goes here --!>
</script>
<?php
}
add_action('body_begin', 'my_function');
10
répondu Stan 2015-07-05 01:51:23

j'ai cherché sur internet des réponses à la même question, mais rien trouvé. J'ai compris de suite à travailler autour d'elle. Mon plugin infini Ad Payer est basé sur cette méthode.

Vous avez besoin de deux crochets wp_head et wp_footer crochet

 

add_action( 'wp_head', 'my_buffer_holder_fxn');

function my_buffer_holder_fxn(){
ob_start()


}


function my_buffer_pour_out_fxn(){

$get_me_buffers  = ob_get_clean();

$pattern ='/<[bB][oO][dD][yY]\s[A-Za-z]{2,5}[A-Za-z0-9 "_=\-\.]+>|<body>/';
ob_start();
if(preg_match($pattern, $get_me_buffers, $get_me_buffers_return)){


$d_new_body_plus =$get_me_buffers_return[0]."<div class='my_below_body_code'> This is below the body text or image or anything you want </div>";

echo preg_replace($pattern, $d_new_body_plus, $get_me_buffers);

}
ob_flush();
}



}

add_action( 'wp_footer', 'my_buffer_pour_out_fxn');


// You can also use the method above to place anything in other sections of WordPress 
//No Javascript used
4
répondu De Paragon 2014-12-14 17:25:31

dans ce scénario, ce que je fais est: utiliser Jquery pour ajouter ou préparer des choses:

http://api.jquery.com/prepend/

1
répondu josoroma 2017-07-31 15:54:49

Je n'ai pu trouver aucun exemple de travail en ligne, mais j'ai trouvé une solution et j'espère qu'elle pourrait aider n'importe qui. C'est assez simple, il suffit d'ajouter jquery et de faire ce que vous voulez. L'exemple ci-dessous pourrait aider n'importe qui.

jQuery(document).ready( function($) {
$('body').prepend('<h1>Hello world</h1>');
});

Voici l'url du site web https://wordpress.org/support/topic/add_action-right-after-ltbodygt-tag

Avec l'aide de la réponse ci-dessus, j'ai fait un plugin qui ajoute directement le contenu après la balise body. Voici le code de l'échantillon :

var wcs_thankyou_msg =  " Your coupon code is <?php echo $post_title; ?>."+"<?php echo get_option('wcs_thankyou_msg'); ?>"

var wcs_scratch_after_text =  "<?php  echo $wcs_scratch_after_text;?>"

var discount_text = "<?php  echo $post_excerpt;?>"

var offer_message = "<?php echo get_option('wcs_offer_text'); ?>" 

var id = "<?php echo $post_id; ?>"



$('body').prepend('<div id="scratch_main"><div class="scratch_open">'+offer_message+'</div><div id="scratchmain" style="overflow:hidden;"><div class="scratchinnermain"><div class="scratch_text"><div class="scratch_close"></div><div class="scratchtxtstl">'+wcs_top_text+'</div><div class="scratchtxtstl2">'+wcs_top_text_h2+'</div><div id="wscratchpad" class="scratch_img"><div id="scratchBg" class="scratchpad"></div><div class="scratch_offer" style="display:none">'+discount_text+'</div></div></div><div class="scratch_form"><div id="thankYouDiv" style="display:none"><div class="scratch_close"></div><div class="form_txt1">'+wcs_thankyou_msg+'</div></div><div class="scratchinnermain" id="scratchinnermain" style="display:none"><div class="form_txt1">'+wcs_scratch_after_text+'</div><div class="scratch_form_main"><div id="returnmessage"></div><div id="ajax-loading-wp">Sending, Please wait...</div><form id="mycontactform" action="" method="post"><div class="clear_input"><div class="label">Name :</div><div class="wc_input"><input id="name" type="text" name="name"/></div></div><div class="clear_input"><div class="label">Email :</div><div class="wc_input"><input id="email" type="text" name="email"/><input id="submit" type="button" value="send" class="register_btn"/></div></div></form></div></div></div></div></div></div>');

});

la chose la plus étonnante est que je ne sais pas comment j'ai fait le code ci-dessus d'une manière facile, en tirant la dynamique des données juste après l'étiquette de corps. J'espère que ma réponse aidera quelqu'un et donnera une meilleure idée. Exemple de travail en direct:http://codecanyon.net/item/woocommerce-coupon-scratch-discount/9235287

0
répondu Sabir Abdul 2014-10-29 16:15:43

une solution très, très, très sale serait:

/* Insert tracking code or others 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;
}
0
répondu Martin from WP-Stars.com 2017-07-21 09:45:53