您可以通过首先在表单中创建一个隐藏字段来完成所需的工作。将值设置为当前嵌入页:
注意隐藏字段ID,对于此演示,它是
3
.
然后,您的内容代码与您的代码类似:
add_action( \'the_content\', function ($content) {
// check if user has submitted this pages form, if not, show only form
if( !isset( $_COOKIE[\'unrestrict_\'.get_the_ID()] ) ) {
// get form #1
$form = RGForms::get_form(1);
// uncomment to review cookies
// echo "<pre>".print_r($_COOKIE,true)."</pre>";
return \'<h2>Restricted Content - Fill out Form</h2>\'.$form;
} else {
// user has in last 30 days submitted this pages form
// show content
return $content;
}
});
对于处理,我们将执行
add_action( \'gform_after_submission_1\', function ($entry, $form) {
// uncomment to review the entry
// echo "<pre>".print_r($entry,true)."</pre>"; die;
// get the hidden field, the embedded from page
$from_page = rgar( $entry, \'3\' );
// set the cookie
setcookie( \'unrestrict_\'.$from_page, 1, strtotime( \'+30 days\' ), COOKIEPATH, COOKIE_DOMAIN, false, false);
// redirect so we dont land on gravity forms "thank you" page
wp_redirect( get_permalink( $from_page ) );
}, 10, 2);
如果你想把它放在
the_content
筛选器您可以为不需要的页面ID添加条件。您可以使用带有post\\u meta/metabox的复选框进行探索。
您可以像上面那样选择每页存储一个cookie,也可以执行一个主cookie,其中值是您添加和查找的ID的序列化数组。
afaik使用cookies这根本不安全,它们可能是伪造的。所以,如果你隐藏了微妙的信息,你应该检查身份验证、安全cookie存储和cookie/用户验证。如果这就是我认为它的目的,线索捕获,这是一个很好的方法。
我在操作中使用了匿名函数,如果这是一个公共插件/主题,您可能需要调用该函数。