Intereting Posts
Использование пользовательских полей в URL-адресе пользовательского типа отправки Развертывание WordPress с Bedrock / Capistrano на площадке – Composer возвращает сообщение «text / html» Есть ли функция WP, чтобы получить имя таксономии из taxonomy_term_id? Удалите возможности автора WordPress для смягчения комментариев в своих собственных сообщениях Как программно свернуть меню панели управления WP? Каковы недостатки использования глобальной переменной? Организуйте загрузку мультимедиа в папки – у меня есть физический доступ к (моему) серверу Использование фильтра query_vars Удалить сообщения Изменения в моей дочерней теме из customizer не появляются в style.css? Теги шаблонов для Buddypress Использование шаблона страницы без страницы Создание изображений в сообщениях ссылки на файл изображения, а не на страницу вложения Вывод из выпадающего списка таксономии уровня Как исключить события (пользовательские сообщения) из поиска, если дата начала уже прошла?

Использование PHP для переключения таблицы стилей и заголовков, установленных в файле cookie

Я не делал много работы с куки-файлами или WordPress раньше, поэтому я думаю, что был немного оптимистичен в моих поисках: p Я создал две темы для своего сайта, день и ночь. Я хотел бы, чтобы пользователь мог выбрать, какую тему они хотели бы получить из текстового виджета с поддержкой php на боковой панели, который затем установит куки-файл с их выбором, изменится на соответствующую таблицу стилей (style.css на ночь, по умолчанию и style1.css для дня) и загрузить новый образ заголовка.

У меня есть функциональность – здесь – http://somethingoriginal.net , однако cookie, похоже, не устанавливается сразу в Chrome, как я уже говорил, эхо-заявления, которые я использовал для печати переменных для тестирования не кажутся последовательными, требуется несколько кликов, а затем, в конце концов, изменения, но изображение заголовка вообще не сдвигается. В Firefox он иногда добавляет обратную косую черту в конец моего URL-адреса, и это отправляет пользователя на страницу «не найден». Я понятия не имею, что он делает в IE.

Мне просто интересно, что мне нужно сделать, чтобы улучшить функциональность? Я не хочу … это, я просто хотел бы попробовать и реализовать его, поскольку я сделал два изображения 🙂

Текстовый виджет боковой панели PHP:

getStyles(); if (isset($_COOKIE["chosenStyle"])) echo "Your current theme is ".$_COOKIE["chosenStyle"].", enjoy!"; else if (isset($_POST['styles'])) echo "Your current theme is". $_POST['styles'].", enjoy!"; else echo "Your current theme is night, enjoy!"; ?> 

EDIT: Я обновил свои файлы функций / заголовков и включил новый код после прочтения этого https://stackoverflow.com/questions/5936054/php-set-cookie-issue . CSS страницы теперь обновляется автоматически, я должен изменить свой текстовый виджет, чтобы отразить выбор. У меня все еще есть проблема с заголовком

Файл functions.php

 function setDayHeader(){ //Set header to day header $args = array( 'width' => 1000, 'height' => 288, 'default-image' => get_template_directory_uri() . '/images/headers/SomethingOriginalSun.png', ); add_theme_support( 'custom-header', $args ); } function setNightHeader(){ $args = array( 'width' => 1000, 'height' => 288, 'default-image' => get_template_directory_uri() . '/images/headers/SomethingOriginalTheMoonAndStars.png', ); add_theme_support( 'custom-header', $args ); } function getStyles() { echo '<form method="post" class="styles" name="styles" action="\"> <select name="styles"> <option value="night">Night</option> <option value="day">Day</option> </select> <button class="submit" name="userStyleChoiceForm" onclick="submit">Set style</button></form>'; } //Set a cookie for the stylesheet if (isset($_POST["styles"])) { $chosenStyle = ($_POST["styles"]); setcookie("chosenStyle", $chosenStyle ,time()+31536000, ""); echo "I have set a cookie with the value ".$_COOKIE["chosenStyle"]; } 

header.php

  <!-- if cookie is set, check here and then change style sheet based on cookie --> <?php if (!(isset($_POST["styles"]))) { //if post not set (first visit) if (!(isset($_COOKIE["chosenStyle"])) || ($_COOKIE["chosenStyle"]) == "night") { //if cookie not set, or is night theme ?> <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" /> <?php setNightHeader(); } else { //cookie must be set to day theme, use day ?> <link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/style1.css" type="text/css"> <?php setDayHeader(); } } else { //if post is set if (($_POST["styles"]) == "day") { //if they have chosen the day theme ?> <link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/style1.css" type="text/css"> <?php } else if($_POST["styles"] == "night") { //if they have chsoen the night theme ?> <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" /> <?php } } ?> 

Я попытался установить файл cookie в файле header.php, но затем получил ошибку «изменить заголовки»: |

Я не уверен на 100%, если я даже ссылаюсь на правильные переменные $ _POST и попробовал объединить ряд обучающих программ, которые я нашел, поэтому любая помощь будет оценена! Я понимаю, что в данный момент я работаю с моего основного сайта, но в любом случае он не совсем «запущен», хотя я надеюсь вскоре создать сайт-манекен / тест WP, чтобы я мог провести все это тестирование в другом месте. благодаря

Solutions Collecting From Web of "Использование PHP для переключения таблицы стилей и заголовков, установленных в файле cookie"

Я знаю, что это старый пост, и вы, вероятно, уже нашли ответ, но здесь идет …

При настройке файлов cookie необходимо включить его в заголовки HTTP, как описано здесь: http://php.net/manual/en/function.setcookie.php

Это означает, что перед отправкой заголовков вам необходимо добавить в свой файл functions.php (непроверенный) манипулятор действия WordPress, как указано ниже.

Я использовал «template_redirect», но вы также могли прочитать использование «init».

 add_action( 'template_redirect', 'set_cookie'); function set_cookie() { // Set cookie if (isset($_POST["styles"])) { setcookie("chosenStyle", $chosenStyle ,time()+31536000, ""); wp_redirect( home_url() ); // Redirect back to home page exit; } } 

Читайте о действиях / фильтрах WordPress и этой странице: http://codex.wordpress.org/Plugin_API/Action_Reference/template_redirect