0

我似乎无法理解为什么 a) 我的变量没有在页面内返回,b) 为什么似乎为每个单独的页面设置了一个 cookie。

目标:

在产品列表中,我可以选择按 5、10 或全部(本示例中的小数字)过滤结果。当我对$_COOKIE重置为默认值进行分页时,并且为该页面设置了一次设置。我可以在第 1 页和第 2 页之间交替显示不同的结果列表。

文件“cookies.php”(之前<!doctype html>):

<?php $post_per_page = $_POST['post_per_page'];
    if (isset($post_per_page)) {
        // Store it in the cookie
        setcookie('post_per_page', $post_per_page, time()+60*60*24, "/");
        // And save in a variable
        $postsperpage = $post_per_page;
    }

    // Then check existing cookies
    else if (isset($_COOKIE['post_per_page'])) {
        $postsperpage = $_COOKIE['post_per_page'];
    }

    // Finally use a default value if none was set
    else {
        // Default to 3 for example:
        $postsperpage = 3;
    }
?>

在我的 taxonomy.php 中:

$args = array(
    'post_type'         =>      'product',
    'posts_per_page'    =>      $postsperpage,
    'paged'             =>      $paged
);

在这个$postsperpage是空的,甚至没有从cookies.php. 所以我不得不回忆一下cookies.php注释掉该setcookie行的内容。

标记:

<form method="post">
    <button type="submit" name="post_per_page" value="5">5</button>
    <button type="submit" name="post_per_page" value="10">10</button>
    <button type="submit" name="post_per_page" value="-1">ALL</button>
</form>

编辑

不知何故,cookie 设置已自行修复。但是我仍然很困惑为什么我必须将cookies.php内容包含到分类中而不是其初始变量设置是全局的。

4

1 回答 1

0

除非这些 php 文件包含在同一页面中,否则 $postsperpage 变量在 taxonomy.php 中不存在。如果是这种情况,您应该像这样检索该页面上的 cookie 值...

$postsperpage = $_COOKIE['post_per_page'];
于 2013-03-11T01:24:41.603 回答