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.
(204)
Poslední komentáře
Eva17.9.2018 at 8:05
Microcomp Milevsko22.5.2018 at 19:31
Jitka Kopecká30.3.2018 at 13:41