私はビーコン(HTMLイメージタグ)をユーザーがログインした後の最初のページの読み込みページに挿入する必要がある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
}
}
正しく両方のフック関数の火が、私は最初のフック関数の焼成上の第2の依存のコンテンツの出力をしようとするたびに、私は何も出力を取得していません。
どうすればいいですか?おそらく、wp_loginフックを使わずに確認できる方法があります。
また、クラスプロパティを使用しようとしました。それはどちらもうまくいかなかった。 –
定数を定義しています。この定数は、コードの処理後に期限が切れます。永続化するには、代わりに$ _SESSION変数を使用します。 login()で$ _SESSION ['first_run'] = trueを試してください。次に、add_beacon()で次のように使用します:if(isset($ _SESSION ['first_run'])){//出力ビーコン} –
私はサイトとして使う必要がない場合、複数のWebサーバーで動作します。私はDBセッションハンドラを書くことができますが、それは負荷を追加します。私はフックの読み込み順序についてはわかりませんが、wp_loginがwp_footerの前に来ると仮定しました。それが本当であれば、wp_loginで実行しているコードは、wordpressがwp_footerにヒットする前に処理されていませんか? –