WordPress: Презапишете шорткод от родителска тема в темата на вашето дете

API на WordPress

Е, мина доста време, откакто споделих няколко съвета за програмиране в WordPress. Напоследък се върнах на пейката за внедряване на код за всички наши клиенти и беше забавно да се върна в разгара на нещата. Може би сте забелязали новите интеграции на White Paper в целия сайт - това беше доста забавен проект!

Днес имах различен проблем. Много от нашите клиенти имат бутони, реализирани чрез шорткодове на родителска тема. Един от нашите партньори в Elevated Marketing Solutions попита дали можем да направим проследяване на събитията на бутоните, тъй като те бяха страхотни призиви за действие в сайтовете. Бутоните за къси кодове не са нищо повече от котва, която е проектирана малко по-красноречиво, като използва серия от класове, които се попълват от опциите за шорткод.

Поради това трябваше да добавим събитие onclick към текста на котвата, за да регистрираме събитие. Ето как може да изглежда:

Бутон за начало

Проблемът, разбира се, е, че има шорт код в нашето родителска тема и не искаме да редактираме родителска тема. И тъй като шорткодът е разположен в цялото съдържание на сайта, ние също не искаме да създаваме нов шорткод.

Решението е доста хлъзгаво. 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!

Какво мислите?

Този сайт използва Akismet за намаляване на спама. Научете как се обработват данните за коментарите ви.