【问题标题】:Gets posts_per_page via $_COOKIE通过 $_COOKIE 获取 posts_per_page
【发布时间】:2013-02-26 02:28:19
【问题描述】:

我似乎无法理解为什么 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 内容包含到分类中,而不是其初始变量设置是全局的。

【问题讨论】:

    标签: php wordpress cookies setcookie


    【解决方案1】:

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

    $postsperpage = $_COOKIE['post_per_page'];
    

    【讨论】:

    • 好吧,这正是我所期待的。因此,我从 cookies.php 中删除了除 cookie 设置之外的所有内容,然后在 taxonomy.php 中设置了变量,该变量在下次刷新之前不会更新。有什么办法让它立即更新?
    • 您能解释一下这些文件是如何加载的吗?一个包含在另一个中,还是您实际上正在导航到它们中的每一个?
    • 使用 Roots Wordpress 主题 (github.com/retlehs/roots):有一个 base.php 文件根据您调用的项目类型(页面、帖子、自定义)调用正确的模板文件。在 base.php 的开头上方,我调用(如 include())cookies.php 文件。然后在调用正确模板部分的循环中,它最终到达 taxonomy.php
    • 在你 SomeSillyName 的帮助下我自己想出来了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 2018-11-21
    • 2016-07-19
    • 2015-03-24
    • 1970-01-01
    • 2011-02-03
    相关资源
    最近更新 更多