
WordPress: Презапишете шорткод от родителска тема в темата на вашето дете
Е, мина доста време, откакто споделих няколко съвета за програмиране в WordPress. Напоследък се върнах на пейката за внедряване на код за всички наши клиенти и беше забавно да се върна в разгара на нещата. Може би сте забелязали новите интеграции на White Paper в целия сайт - това беше доста забавен проект!
Днес имах различен проблем. Много от нашите клиенти имат бутони, реализирани чрез шорткодове на родителска тема. Един от нашите партньори в Elevated Marketing Solutions попита дали можем да направим проследяване на събитията на бутоните, тъй като те бяха страхотни призиви за действие в сайтовете. Бутоните за къси кодове не са нищо повече от котва за маркери, която е проектирана малко по-красноречиво, като използва серия от класове, които се попълват от опциите за шорткод.
Поради това трябваше да добавим събитие onclick към котвата, за да регистрираме събитие. Ето как може да изглежда:
<a href="https://highbridgeconsultants.com" class="button blue medium" onClick="ga('send', 'event', 'button', 'Click', 'Home Button');">Бутон за начална страница
Проблемът, разбира се, е, че в нашия има кратък код родителска тема и не искаме да редактираме родителска тема. И тъй като шорткодът е разположен в цялото съдържание на сайта, ние също не искаме да създаваме нов шорткод.
Решението е доста хлъзгаво. WordPress API ви позволява да премахнете къс код! И така, в нашата дъщерна тема можем да премахнем шорткода, след което да го заменим с новата ни функция за шорткод:
add_action ('after_setup_theme', 'call_child_theme_setup');
функция call_child_theme_setup () {remove_shortcode ('old_button_function_in_parent_theme'); add_shortcode ('button', 'new_button_function_in_child_theme'); }
функция new_button_function_in_child_theme ($ atts, $ content = null) {... вашият нов шорткод е тук ...}
В новата си функция за бутони (в функцията на детската ми тема functions.php) пренаписах функцията за шорткод, за да добавя динамично събитие onClick събитие. Резултатът работи прекрасно и вече се проследява в Google Analytics!