Поддержка Проблемы и решения Цели метрики и Гугл на кнопку зашитую в тему

  • Добрый день.
    Я только начинаю разбираться с Вордпресс. И прошу помощи у знающих людей.
    Дано: сайт вордпресс. тема: RARA Business
    На первом экране главной страницы есть активная кнопка с тэгом «tel».
    Необходимо повесить отслеживание цели яндекс метрики и гугл аналитики, но проблема в том, что редактирование кнопки средствами редактора темы, не даёт возможность вставить туда код. А поиск в файлах по ДИВ и СПАН ничего не дал. Помогите пожалуйста, как мне отредактировать хтмл код ссылки данной кнопки?

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 12 ответов — с 1 по 12 (всего 12)
  • активная кнопка с тэгом «tel».

    Скорее всего эта кнопка к теме отношения не имеет и создана отдельным плагином. Выясните каким и в файлах этого плагина ищите её код

    Скорее всего эта кнопка к теме отношения не имеет и создана отдельным плагином.

    Текст кнопки и сама ссылка редактируются Настройка ▸ Frontpage Settings
    Banner Section
    https://postimg.cc/0rFQ98cF — скриншот
    Вроде бы все плагины перебрал, не получается. =(

    Вам необходимо создать внешнюю функцию на jQuery, которая будет реагировать на событие нажатия кнопки. Либо подключаем внешний js, либо, если уже существует какой-нибудь script.js, добавляем в него такой код:

    jQuery(document).on('ready', function() { //если данная строка есть, не добавляем
    $('.btn-holder').on('click', function ( ) {
      ym(XXXXXXXX, 'reachGoal', 'target_name'); return true;
      });
    }); //если первая строка есть, не добавляем
    
    //For GA
    $('.btn-holder').on('click', function ( ) {
      ga('send', 'event', {
        eventCategory: 'Outbound Link',
        eventAction: 'click',
        });
    });

    Конечно, может где-то ошибся, но без игрищ с кодом у меня отслеживание настроить еще не получалось.

    Конфликт, переменная $ уже используется.
    Извините, но в скриптах я вообще ноль.
    Я нашел в файле template-functions.php место где формируется эта ссылка:

    <div class="btn-holder wow fadeInUp" data-wow-duration="1s" data-wow-delay="0.7s">
                                        <?php
                                            if ( $link_one_label ) echo  '<a href="'. esc_url( $link_one_url ) .'" class="btn-free-inquiry"><i class="fa fa-edit"></i>'. esc_html( $link_one_label ) .'</a>'; 
                                            if ( $link_two_label ) echo '<a href="'. esc_url( $link_two_url ) .'" class="btn-view-service">'. esc_html( $link_two_label ) .'</a>';
                                        ?>
                                    </div>

    Но вставить сюда почему то не получается =(

    В тот файл вообще ничего не нужно вставлять. Это отдельная функция и она должна быть вынесена во вне. Желательно вообще делать в рамках дочерней темы или собственного плагина.
    Переменных $ может быть множество. И такой результат говорит лишь о том, что вставили не туда. Плюс ко всему, это jQuery код. В php файл его вставлять можно только создав функцию, содержащую в себе скрипт. Так делать не стоит.
    Смотрите порядок действий.
    В файле functions.php создаете такую функцию:
    1. Если используете дочернюю тему.

    add_action('wp_enqueue_scripts', 'my_theme_scripts');
    function my_theme_scripts() {
        wp_enqueue_script('myscriptass', get_stylesheet_directory_uri() . '/assets/js/myscriptass.js', array( 'jquery' ), true);
    }

    2. Если вносите изменения прямо в тему.

    add_action('wp_enqueue_scripts', 'my_theme_scripts');
    function my_theme_scripts() {
        wp_enqueue_script('myscriptass', get_template_directory_uri() . '/assets/js/myscriptass.js', array( 'jquery' ), true);
    }

    Теперь, по адресу assets/js создаете файл myscriptass.js. Можете указать другой путь и другое название файла.
    Теперь вносите тот код в новый файл в таком виде:

    jQuery(document).on('ready', function() {
    $('.btn-holder').on('click', function ( ) {
      ym(XXXXXXXX, 'reachGoal', 'target_name'); return true;
      });
    //For GA
    $('.btn-holder').on('click', function ( ) {
      ga('send', 'event', {
        eventCategory: 'Outbound Link',
        eventAction: 'click',
        });
    });
    });

    Сохраняете файл, если есть плагины кеширования и минификации js, то очищайте кеш. Проверяйте. Дальше будем думать, ошибки вполне возможны. По крайней мере GA я подключал нечасто. С метрикой проблем практически нет.
    ЗЫ. ym -функция для нового счетчика метрики, если у вас старая метрика, то лучше обновить.

    • Ответ изменён 4 года, 12 месяцев назад пользователем ren334.

    Уважаемый Ren334, спасибо что пытаетесь помочь мне.
    Сделал как Вы сказали. Обновил счетчик. Добавил в конце файла functions.php (в папке темы) второй вариант кода. Создал отдельный файл /js/myscriptass.js с кодом.
    При вызове консоль показывает такую же ошибку как в прошлый раз.

    myscriptass.js?ver=1:2 Uncaught TypeError: $ is not a function
        at HTMLDocument.<anonymous> (myscriptass.js?ver=1:2)
        at HTMLDocument.dispatch (jquery.js?ver=1.12.4:3)
        at HTMLDocument.r.handle (jquery.js?ver=1.12.4:3)
        at Object.trigger (jquery.js?ver=1.12.4:3)
        at Object.a.event.trigger (jquery-migrate.min.js?ver=1.4.1:2)
        at a.fn.init.triggerHandler (jquery.js?ver=1.12.4:3)
        at Function.ready (jquery.js?ver=1.12.4:2)
        at HTMLDocument.K (jquery.js?ver=1.12.4:2)

    П.С. Мне б хотя бы метрику повесить, я уже совсем растерялся.

    Модератор Yuri

    (@yube)

    Попробуйте добавить доллар

    jQuery(document).on('ready', function($) {
    

    и далее по тексту

    Или все $ в коде заменить на jQuery

    • Ответ изменён 4 года, 12 месяцев назад пользователем Yuri.

    потому что код неправильный.
    замените $ на jQuery в файле скрипта.

    замените $ на jQuery в файле скрипта.

    Спасибо, помогло. Огромное спасибо всем за помощь. Вы лучшие.

    Да, видимо какой-то конфликт в библиотеке, у меня такой код отлично работает. Только я делал его для отслеживания событий в Caldera Forms, но принцип тот же.

    Да, видимо какой-то конфликт в библиотеке, у меня такой код отлично работает.

    да нет конфликтов.
    у вас, видимо, jquery не «родная», а с какого-нибудь cdn.

    да нет конфликтов.
    у вас, видимо, jquery не «родная», а с какого-нибудь cdn.

    В том-то и дело, что тот сайт, где 3.3.1 подключал, работает. Но и другой сайт, с родным jQuery, тоже нормально пашет. Но ладно, сейчас проверил, если использовать jQuery, то все нормально, проблем нет. Впредь буду применять именно jQuery.

    • Ответ изменён 4 года, 12 месяцев назад пользователем ren334.
Просмотр 12 ответов — с 1 по 12 (всего 12)
  • Тема «Цели метрики и Гугл на кнопку зашитую в тему» закрыта для новых ответов.