好吧我想到了这个
add_action( \'wp_loaded\', \'my_create_questionnaire_link\');
function my_create_questionnaire_link(){
// this check is for demo, if you go to http://yoursite.demo/?create-my-link, you will get your unique url added to your content
if( isset( $_GET[\'create-my-link\'] ) ){
// This filter is for demo purpose
// You might want to create a button or a special page to generate your
// unique URL
add_filter( \'the_content\', function( $content ){
// This is the relevant part
// This code will create a unique link containing valid period and a nonce
$valid_period = 60 * 10; // 10 minutes
$expiry = current_time( \'timestamp\', 1 ) + $valid_period; // current_time( \'timestamp\' ) for your blog local timestamp
$url = site_url( \'/path/to/your/portfolio/page\' );
$url = add_query_arg( \'valid\', $expiry, $url ); // Adding the timestamp to the url with the "valid" arg
$nonce_url = wp_nonce_url( $url, \'questionnaire_link_uid_\' . $expiry, \'questionnaire\' ); // Adding our nonce to the url with a unique id made from the expiry timestamp
// End of relevant part
// now here I return my nounce to the content of the post for demo purposed
// You would use this code when a button is pressed or when a special page is visited
$content .= $nonce_url;
return $content;
} );
}
}
这是检查唯一URL有效性的地方
add_action( \'template_redirect\', \'my_url_check\' );
function my_url_check(){
if( isset( $_GET[\'questionnaire\'] )){
// if the nonce fails, redirect to homepage
if( ! wp_verify_nonce( $_GET[\'questionnaire\'], \'questionnaire_link_uid_\' . $_GET[\'valid\'] ) ){
wp_safe_redirect( site_url() );
exit;
}
// if timestamp is not valid, redirect to homepage
if( $_GET[\'valid\'] < current_time( \'timestamp\', 1) ){
wp_safe_redirect( site_url() );
exit;
}
// Show your content as normal if all verification passes.
}
}