将WP搜索查询保存为成员区域中的href

时间:2018-03-15 20:16:53

标签: javascript wordpress search

寻求更多指导而不是解决方案来实现这一目标 - 所以任何建议都有帮助!

使用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);
                }
            }
        }

2 个答案:

答案 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,所以一定要检查它。