135
Zobrazení

Nedávno jsem potřeboval měřit GA eventy na WordPress menu, tak jsem si řekl, že to zkusím vyřešit.

Menu se typicky generuje pomocí wp_nav_menu funkce, takže první, co mě napadlo, bylo napsat si vlastní Menu.

Ale ještě předtím jsem se rozhodl prozkoumat zdrojové kódy WordPressu, zda to nejde vyřešit skrze nějaký hook (action/filter). A skutečně. Objevil jsem tam filter nav_menu_link_attributes, který umožňuje do položky menu vložit vlastní parametry.

Bohužel se všechny atributy, kromě href převádějí na entity, takže jsem ještě musel upravit filter attribute_escape tak, aby při detekci klíčového slova nechal text beze změny (vše měříme pomocí Google Tag Manageru, takže je to slovo dataLayer).

Celý kód není nakonec složitý:

[sociallocker]

add_filter( 'nav_menu_link_attributes', function( $atts, $item, $args ) {
 $atts['onClick'] = "dataLayer.push({ 'event':'GAevent', 'eventCategory':'Navigace', 'eventAction':'".$item->title."', 'eventLabel':'', 'eventInteraction': false })";
 return $atts;
}, 10, 3 );

add_filter( 'attribute_escape', function( $safe_text, $text ) {
 return preg_match('/dataLayer/', $text) ? $text : $safe_text;
}, 10, 2 );

[/sociallocker]

Tento kód stačí vložit do functions.php ve vašem tématu.

(135)

Jak měřit Google Analytics události u WordPress menu

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>