我想更改一个会话变量,它将在两个不同的位置更改另一个变量。一个变量决定了用户将看到哪些帖子,它们位于我的自定义帖子存档文件(archive spark.php)中,另一个变量位于我的(functions.php)文件中,我正在重力表单挂钩中使用该文件,该挂钩决定了表单将发布到哪个类别。重力表单是所有页面上的弹出窗口。
当我在自定义post类型页面(archive spark.php)上时,一切都很好,我创建的表单更改了这两个页面中的变量,但当我重新加载页面或转到另一个页面时,我再次设置了加载默认变量。我可以理解为什么它会这样做,因为我的会话位于“if(isset)”中,但我不知道如何在提交表单后将变量作为会话变量保存。
我将此插件用于会话变量:http://silvermapleweb.com/using-the-php-session-in-wordpress/
下面是代码:归档spark。php
<?php
//this is default variable if nothing is submitted with my form
$the_user_garden = "gardens";
?>
<?php
//this is the form that will change the variable
if(isset($_POST[\'submit\']))
{
$the_user_garden = $_POST[\'sub_garden_1\'];
}
?>
<form method="post" action="<?php echo $_SERVER[\'REQUEST_URI\']; ?>">
<input type="text" name="sub_garden_1" value="sub_garden_1"><br>
<input type="submit" name="submit" value="Submit Form"><br>
</form>
<?php
//this put the new variable value from the form as session variable
$_SESSION[\'myKey\'] = $the_user_garden;
?>
<?php
$author_id = get_current_user_id( );
//this is where I am using the changes variable
if( have_rows($the_user_garden, \'user_\'.$author_id) ): ?>
<?php
//and here too
while( have_rows($the_user_garden, \'user_\'.$author_id) ): the_row(); ?>
功能。php
<?php
add_action(\'init\', \'myStartSession\', 1);
add_action(\'wp_logout\', \'myEndSession\');
add_action(\'wp_login\', \'myEndSession\');
function myStartSession() {
if(!session_id()) {
session_start();
}
}
function myEndSession() {
session_destroy ();
}
?>
<?php
// this is where I need the variable for gravity form(pop up)
if(isset($_SESSION[\'myKey\'])) {
$the_user_garden = $_SESSION[\'myKey\'];
} else {
$the_user_garden = "gardens";
}
?>
<?php
//this is where I am using variable
$author_id = get_current_user_id( );
if( have_rows($the_user_garden, \'user_\'.$author_id) ): ?>
基本上,我需要一种方法,将会话变量存储在整个网站的所有页面上,如果我提交表格以保存该变量。
提前感谢。。