Добавление кода на сайт WordPress при загрузке первой страницы после входа в систему - PullRequest
0 голосов
/ 28 октября 2011

Я пишу плагин WordPress, в котором мне нужно вставить маяк (тег HTML-изображения) на страницу при первой загрузке страницы после входа пользователя в систему, то есть на страницу, на которую он перенаправлен. Последующие просмотры страниц тех же или других страниц не должны включать этот код маяка.

Я пробовал несколько способов сделать это.

Я добавил функцию в хук wp_login. Из этой функции я попытался добавить другую функцию в хук wp_footer для вывода содержимого.

// in my class constructor
add_action('wp_login', array($this, 'login'));

public function login() {
    add_action('wp_footer', array($this, 'add_beacon'));
}

Это не сработало, поэтому я попытался установить обе ловушки спереди и установить глобальную переменную для указания первой загрузки. Это не было воспринято моей второй функцией и не было константой.

// in my class constructor
add_action('wp_login', array($this, 'login'));
add_action('wp_footer', array($this, 'add_beacon'));

public function login() {
    define('FIRST_RUN', true);
}

public function add_beacon() {
    if (defined('FIRST_RUN')) {
        // output beacon
    }
}

Обе функции ловушки работают корректно, но всякий раз, когда я пытаюсь сделать вывод содержимого во второй зависимой от запуска первой функции ловушки, я не получаю вывод.

Есть идеи, как мне это сделать? Возможно, есть какой-то способ, которым я могу проверить, не используя хук wp_login вообще.

1 Ответ

2 голосов
/ 29 октября 2011

Попробуйте использовать cookie для каждого сеанса.

Код будет выглядеть примерно так:

function my_init() { 
  if ( is_user_logged_in() ) {  
    if (!isset($_COOKIE['beacon'])) {  
      //Track user code / add wp_footer action
      setcookie ('beacon' 'tracked'); 
    }
  }
}
add_action('init','my_init');

(Код не проверен. Надеюсь, вы поняли идею).

Если вас не устраивает файл cookie, вы можете сохранить последнюю страницу, загруженную пользователем, в таблицу usermeta ... однако вам нужно будет позвонить, чтобы узнать, как долго загрузка последней страницы считается новой. сессия.

...