사용자가 로그인 한 후 첫 페이지로드 페이지 (예 : 페이지)에 비콘 (HTML 이미지 태그)을 삽입해야하는 곳에 WordPress 플러그인을 쓰고 있습니다. 그들은로 리디렉션됩니다. 동일 또는 다른 페이지의 후속 페이지 뷰는이 비컨 코드를 포함하지 않아야합니다.로그인 후 첫 페이지로드시 WordPress 사이트에 코드 추가
나는 이것을하기 위해 여러 가지 방법을 시도했다.
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 훅을 전혀 사용하지 않고 확인할 수있는 방법이있을 것입니다.
또한 클래스 속성을 사용하려고했습니다. 그것도 작동하지 않았다. –
코드를 처리 한 후에 만료되는 상수를 정의합니다. 유지하려면 $ _SESSION 변수를 대신 사용해야합니다. login()에서 다음을 시도하십시오 : $ _SESSION [ 'first_run'] = true; 그런 다음 add_beacon()에서 다음을 사용하십시오 : if (isset ($ _SESSION [ 'first_run'])) {// 출력 비컨} –
특히 사이트를 사용할 필요가 없다면 세션을 사용하고 싶지 않습니다. 여러 웹 서버에서 실행됩니다. DB 세션 핸들러를 작성할 수는 있지만로드가 가중됩니다. 후크 로딩 순서를 잘 모르겠지만 wp_login이 wp_footer 앞에 올 것이라고 가정했습니다. 그게 사실이라면 wp_login에서 실행되는 코드는 워드 프레스가 wp_footer에 도달하기 전에 처리되지 않았습니까? –