2013-03-11 3 views
0

Кажется, я не могу понять, почему: а) моя переменная не возвращается на странице и, б) почему, похоже, для каждой отдельной страницы есть набор файлов cookie.

AIM:

В список продуктов, у меня есть возможность фильтровать результаты по (небольших количествах для данного примера) 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 пусто, даже не возвращая по умолчанию «3» от cookies.php. Поэтому я должен вспомнить содержимое cookies.php, комментируя строку setcookie.

Markup:

<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> 

EDIT

Как-то параметр печенья закрепил себя вверх. Но я все еще смущен, почему я должен включать содержимое cookies.php в таксономию, а не его первоначальную переменную, являющуюся глобальной.

ответ

0

Если эти php-файлы не включены на одну страницу, переменная $ postperpage не существует на taxonomy.php. Если это так, вы должны просто получить значение cookie на этой странице, например ...

$postsperpage = $_COOKIE['post_per_page']; 
+0

Хорошо, это было то, чего я ожидал. Поэтому я удаляю все из файла cookie.php, кроме настройки файла cookie, а затем имеет значение переменной в taxonomy.php, переменная не обновляется до следующего обновления. Любой способ немедленно обновить его? – Ahhhhhhhhhhhhhdfgbv

+0

Не могли бы вы объяснить, как эти файлы загружаются? Включен ли кто-то в другой, или вы фактически переходите к каждому из них? – SomeSillyName

+0

Использование темы Roots Wordpress (https://github.com/retlehs/roots): Существует файл base.php, который вызывает правильный файл шаблона в зависимости от того, какой тип элемента вы вызываете (страница, сообщение, пользовательский) , Над началом base.php я вызываю (например, 'include()') файл cookie.php. Затем в цикле вызова правильной части шаблона он в конечном итоге попадает в taxonomy.php – Ahhhhhhhhhhhhhdfgbv

Смежные вопросы