寻求更多指导而不是解决方案来实现这一目标 - 所以任何建议都有帮助!
使用s2member创建用于登录的成员区域,理想情况下,该登录页面上将有一个区域,其中包含同一WP站点上已保存搜索字符串的列表。
示例:
我访问mysite.com并搜索“狗狗”,结果如下:
mysite.com/?s=dog
理想情况下,用户应该能够点击页面某处的按钮,将搜索查询/ URL保存到其成员登录页面,作为点击和查看的href。
获得一个带有一些Javascript的当前按钮,允许用户保存当前的搜索查询/ 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);
}
}
}
答案 0 :(得分:0)
您可以使用php保存关键字在用户会话中:
<?php
if(isset($_GET['s']) {
$_SESSION['search'] = $_GET['s'];
}
?>
答案 1 :(得分:0)
当用户点击搜索页面时,您可以采取相应的措施,但您可能需要根据需要进行更改。
<强> 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
会安全地将它添加到数据库中,但即便如此,人们也可以添加一个虚假的用户ID,所以一定要检查它。