通过$ _COOKIE获取posts_per_page

时间:2013-03-11 00:55:55

标签: php wordpress cookies setcookie

我似乎无法理解为什么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返回默认值“3”。因此,我必须回顾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内容包含在分类中,而不是将其初始变量设置包含在全局中。

1 个答案:

答案 0 :(得分:0)

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

$postsperpage = $_COOKIE['post_per_page'];