WPトランジェントはユーザーセッションに固有のものですか、それともどこかのセッションからアクセスできるのでしょうか。
それらはDBに書き込まれるので、私はそれらがどこでも公開されていてアクセス可能であると想像するでしょう、しかし彼らの範囲を1人のユーザーのセッションだけに制限する方法はありますか?
私が構築しているウェブサイトはログイン/会員増強オプションを提供していません。userによって私はウェブサイトを見ている人を意味します - 私は ではありません wp_users
について話しています!
例:
私は、乱数を生成し、それを同じセッション内でアクセス可能なはずのトランジェントに格納するホームページをロードします。
しかし、同じコンピュータからでも、別のブラウザから、または別のIPから、私はこの一時的なものにアクセスすることができないはずです...
これは可能ですか?
トランジェントは、期限が切れる単なるデータベースキーです。 WordPressに特定の情報を記憶してもらいたいが、限られた時間内であるように指示するのと同じです。一般に、トランジェントは任意の要求を通じてPHPにアクセスできます。
しかし、それらはサーバーサイドであるため、開発者としてあなたが公開した場合にのみ、トランジェントはフロントエンドユーザーに公開されます。
あなたの具体的な質問を考えます。
私は、乱数を生成し、それを同じセッション内でアクセス可能なはずのトランジェントに格納するホームページをロードします。
トランジェントとクッキーを組み合わせることをお勧めします。基本的に、リクエストごとに一意のキー(おそらくtime()
といくつかの乱数のハッシュ)を生成し、それをユーザーのセッションキーとして使用します。それから、だけのユーザーにトランジェントを保存できます。必ずこの一意のキーをcookieのようにブラウザに渡してください。次回同じユーザーがページを更新したときにも、同じ番号が割り当てられます。
未テスト 擬似コード...
/**
* Check the user's cookie if they have it.
* Create one if they don't.
*/
function wpa_105249_check_cookie() {
if ( isset( $_COOKIE['wpa_105249_key'] ) ) {
$key = (string) $_COOKIE['wpa_105249_key'];
} else {
$key = md5( time() . Rand() );
// Set the browser cookie to expire in 30 minutes
set_cookie( 'wpa_105249_key', $key, time() + 30 * 60 )
}
// Try to grab the transient from the database, if it exists.
$transient = get_transient( 'wpa_105249_' . $key );
// If the transient doesn't exist, create it.
if ( false === $transient ) {
// Call your function to generate the random number.
$transient = generate_random_number();
// Store the transient, but expire in 30 minutes.
set_transient( 'wpa_105249_' . $key, $transient, 30 * 60 );
}
wp_cache_set( 'wpa_105249_number', $transient );
}
add_action( 'plugins_loaded', 'wpa_105249_check_cookie' );
平易な英語では、これは次のようになります。
wpa_105249_key
クッキーを確認してくださいこれ以降に呼び出すコード - 基本的にコード内の別の場所にあるすべてのコード - 現在のユーザーの乱数を取得するには、次のように呼び出します。
$number = wp_cache_get( 'wpa_105249_number' );
トランジェントは永続的なストレージメカニズムです。つまり、特定のキーを使ってトランジェントを保存することで、同じキーを使って同じトランジェントを取得できるようになります(有効期限が切れていないためキャッシュがフラッシュされていない場合)。
「パブリック」は実際には適用されません。これらは内部コードの概念であり、それらにアクセスするのはユーザーのブラウザではなくあなたのコードだけであるためです。
ユーザー固有のデータを一時的に格納したい場合は、おそらくそのためのユーザー固有のキーを考え出すのが難しいでしょう。
ユーザーのCookieに情報を保存したり、何らかの適切なセッションメカニズムを使用したりすることがおそらくより適しています。