好吧我想到了这个
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.
  }
}