Сохранить поисковый запрос WP как href в личном кабинете

Ищете больше рекомендаций, чем решения для этого - так что любой совет поможет!

Использование s2member для создания личного кабинета для входа в систему, и в идеале на этой странице входа должна быть область со списком сохраненных строк поиска на том же сайте WP.

Пример:

Я захожу на сайт mysite.com и выполняю поиск по запросу «собака», что приводит к следующему URL-адресу:

mysite.com/?s=dog

В идеале пользователь должен иметь возможность щелкнуть кнопку где-нибудь на странице, которая сохраняет поисковый запрос / URL-адрес на странице входа в систему как href, по которому можно щелкнуть и просмотреть.

Есть текущая кнопка с некоторым Javascript, которая позволяет пользователю сохранять текущий поисковый запрос / URL-адрес, поэтому надеется расширить эту функцию или построить на ней другую функцию для достижения этой цели.

Пример копирования URL-кода, с которым я работаю:

 <div id = "copy"><i class = "fa fa-clipboard" aria-hidden = "true"></i> Copy Search</div>

Функция:

            // Copies a string to the clipboard
        function copyToClipboard(text) {
            if (window.clipboardData && window.clipboardData.setData) {
                // IE specific code path to prevent textarea being shown while dialog is visible.
                return clipboardData.setData("Text", text); 

            } else if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
                var textarea = document.createElement("textarea");
                textarea.textContent = text;
                textarea.style.position = "fixed";  // Prevent scrolling to bottom of page in MS Edge.
                document.body.appendChild(textarea);
                textarea.select();
                try {
                    return document.execCommand("copy");  // Security exception may be thrown by some browsers.
                } catch (ex) {
                    console.warn("Copy to clipboard failed.", ex);
                    return false;
                } finally {
                    document.body.removeChild(textarea);
                }
            }
        }
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
73
2

Ответы 2

Вы можете сохранить ключевое слово в сеансе пользователя с помощью php:

<?php 
if (isset($_GET['s']) {
    $_SESSION['search'] = $_GET['s'];
}
?>

Когда пользователь попадает на страницу поиска, вы можете что-то сделать в связи с этим, хотя вам может потребоваться изменить это в соответствии с вашими потребностями.

HTML

<input type = "hidden" name = "user_id" id = "user_id" value = "1" />

<input type = "hidden" name = "save_search_term" id = "save_search_term" value = "writing a blog" />

PHP

// use as a fallback, can be provided in request
$user_id = get_current_user_id();

// sanitize this
$search_term = $_POST['s'];

// replaces existing meta if 'saved_search' already exists
update_user_meta( $user_id, 'saved_search', $search_term );

Вероятно, лучше всего, если с кнопкой отправки вы также включите два скрытых поля ввода для захвата этих данных, поскольку они могут быть искажены / потеряны в запросе. Таким образом, вы должны получить данные из полей ввода с помощью JavaScript и отправить эти данные обработчику PHP, чтобы сохранить метаданные пользователя.

Конечно, будьте очень осторожны с тем, какие данные вы сохраняете в своей базе данных при захвате таких полей, поскольку люди могут изменить их злонамеренным образом. Я думаю, что update_user_meta безопасно добавит его в базу данных, но даже в этом случае люди могут добавить поддельный идентификатор пользователя, поэтому обязательно проверьте его.

Спасибо, Даниэль! Мне удалось получить вариант этой работы. Мой единственный вопрос: поскольку он, кажется, хранит только один фрагмент данных за раз, как его настроить для записи, скажем, до пяти фрагментов данных? Другими словами, отслеживает ли update_user_meta такую ​​вещь или ее нужно настроить в какой-то функции?

Leroy 20.03.2018 20:37

Что ж, это зависит от того, что вы хотите делать с данными, но вы всегда можете включить больше скрытых полей ввода и заполнить их данными.

user7236046 21.03.2018 19:23

Другие вопросы по теме