J'essaie de pousser certaines variables dans Google Analytics et j'aimerais pouvoir détecter si un shortcode a été inclus dans une page.
Quelqu'un sait-il comment s'y prendre?
Je vous remercie!
Noel
Je me suis parfois demandé la même chose - si wp est peut-être coché lors de la sauvegarde et tenu un registre, etc.
J'ai jeté un coup d'œil au code et il semble que non.
Il existe cependant un $shortcode_tags
global, et wp a cette fonction
function get_shortcode_regex() {
global $shortcode_tags;
$tagnames = array_keys($shortcode_tags);
$tagregexp = join( '|', array_map('preg_quote', $tagnames) );
// WARNING! Do not change this regex without changing do_shortcode_tag() and strip_shortcodes()
return '(.?)\[('.$tagregexp.')\b(.*?)(?:(\/))?\](?:(.+?)\[\/\2\])?(.?)';
}
utilisé ici pour appliquer le shortcode:
$pattern = get_shortcode_regex();
return preg_replace_callback('/'.$pattern.'/s', 'do_shortcode_tag', $content);
Mon regex n'est pas terrible, mais peut-être que vous pourriez faire quelque chose avec ça?
Sinon:
Ensuite, il y a la méthode de la force brute - pour chacune des balises shortcode, "simplement" vérifiez si '['.$tag
est dans le contenu? Mais ensuite, certains développeurs/plugins plus anciens font leurs propres filtres géniaux sur le contenu avec des commentaires ou d’autres balises personnalisées.
Dans ce cas, vous pouvez également vérifier le $wp_filter
wp global pour $wp_filter['the_content']
; le contenu devrait les fonctions appelées "le contenu".
Pour être malin
Vous pourriez peut-être ajouter une action vous-même après l'enregistrement/la mise à jour, ensuite vérifier les filtres et les codes courts et stocker quelque chose dans un post-méta. Ensuite, tout ce que vous avez à faire au moment de l'affichage est de vérifier le post-méta.
Ouf ... ça vaut le coup?
Voici donc ma version de trainwreck (Anmari a donné beaucoup de bonnes idées). Ce n'est pas vraiment flexible du tout pour quelqu'un d'autre non plus, mais notre plate-forme hébergée et la façon dont les gens l'utilisent sont très flexibles (me facilitent la vie):
function tfh_analytics() {
$client_ua = trim(get_option( 'tf_ua_analytics' ));
?>
<script type='text/javascript'>
//<![CDATA[
var _gaq = _gaq || [];
// TF Aggregate Tracking
_gaq.Push(['_setAccount','UA-xxxxxxx-x']);
_gaq.Push(['_trackPageview'],['_trackPageLoadTime']);
// Define Theme
_gaq.Push(['_setCustomVar',1,'Theme','<?php echo TF_THEME; ?>']);
// Define Category
<?php
if ( have_posts() && ( is_page() || is_single() ) ) {
$content = get_the_content(the_post());
// Check if Front Page
if ( is_front_page() ) {
if ( is_home() ) {
$category = 'home-blog';
} else {
$category = 'home-static';
}
} else {
// Check if Events
if ( stripos( $content , '[tf-event') ) { $category = 'events'; }
// Check if Food Menu
if ( stripos( $content , '[tf-food') ) { $category = 'food-menu'; }
// Check if Location
if ( stripos( $content , '[tf-googlemaps') ) { $category = 'location'; }
// Check if Blog
if ( is_home() ) { $category = 'blog'; }
}
if ( !$category ) { $category = 'other'; }
}
?>
_gaq.Push(['_setCustomVar',2,'Category','<?php echo $category; ?>']);
// Define Yelp Bar
_gaq.Push(['_setCustomVar',3,'YelpEnabled','<?php if( get_option( 'tf_Yelp_enabled' ) == true) { echo 'true'; } else { echo 'false';} ?>']);
// Define User Type
_gaq.Push(['_setCustomVar',4,'User','<?php if( is_user_logged_in() ) { echo 'logged_in'; } else { echo 'logged_out'; } ?>',1]);
<?php if ( $client_ua != '' ) { ?>
// Client Tracking
_gaq.Push(['b._setAccount','<?php echo $client_ua; ?>']);
_gaq.Push(['b._trackPageview']);
<?php } ?>
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
//]]>
</script>
<?php
}
De manière simple, utilisez la variable $tag
dans votre fonction de shortcode. Obtenez cette idée de ici
add_shortcode("your_shortcode_tag", "shortcode_function");
function shortcode_function($atts, $content = null, $tag){ // $tag variable is here
// check if your shortcode is called
if($tag == "your_shortcode_tag"){
// do your stuff
}
}