WordPress: перезапись шорткода родительской темы в дочерней теме

API WordPress

Что ж, прошло много времени с тех пор, как я поделился некоторыми советами по программированию в WordPress. В последнее время я вернулся на скамейку запасных, развертывая код для всех наших клиентов, и было весело снова вернуться в курс дела. Возможно, вы заметили новую интеграцию с маркетинговой Белой книгой по всему сайту - это было довольно веселый проект!

Сегодня у меня была другая проблема. Многие из наших клиентов имеют кнопки, реализованные с помощью шорткодов родительских тем. Один из наших партнеров в Elevated Marketing Solutions спросил, нельзя ли отслеживать события на кнопках, поскольку они служат отличным призывом к действию на всех сайтах. Кнопки шорткода - это не что иное, как тег привязки, который более выразительно разработан с использованием серии классов, которые заполняются параметрами шорткода.

Из-за этого нам нужно было добавить событие onclick к тексту привязки, чтобы зарегистрировать событие. Вот как это может выглядеть:

<a href="https://highbridgeconsults.com" class="button blue medium" onClick="ga('отправить', 'событие', 'кнопка', 'Click', 'Кнопка "Домой");">Кнопка "Домой"

Проблема, конечно же, в том, что в нашем родительская тема и мы не хотим редактировать родительскую тему. И поскольку шорткод размещается по всему контенту сайта, мы также не хотим создавать новый шорткод.

Решение довольно приятное. WordPress API (Программный интерфейс приложения) позволяет удалить шорткод! Итак, в нашей дочерней теме мы можем удалить шорткод, а затем заменить его нашей новой функцией шорткода:

add_action ('after_setup_theme', 'call_child_theme_setup');
функция Calling_child_theme_setup () {remove_shortcode ('old_button_function_in_parent_theme'); add_shortcode ('кнопка', 'new_button_function_in_child_theme'); }
function new_button_function_in_child_theme ($ atts, $ content = null) {... ваш новый шорткод здесь ...}

В моей новой функции кнопки (в functions.php моей дочерней темы) я переписал функцию шорткода, добавив динамическое событие onClick. Результат отлично работает и теперь отслеживается в Google Analytics!

Как вы думаете?

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются ваши данные комментариев.