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
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/
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.
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');
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
dans ce scénario, ce que je fais est: utiliser Jquery pour ajouter ou préparer des choses:
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
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;
}