Ищете больше рекомендаций, чем решения для этого - так что любой совет поможет!
Использование 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);
}
}
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете сохранить ключевое слово в сеансе пользователя с помощью 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 такую вещь или ее нужно настроить в какой-то функции?