2017-09-21 7 views
-1

私がしたいことは、ユーザーがリンクを送信できるページにサブミットフィールドを持ち、成功したサブミット後にユーザーがページを登録するようにリダイレクトされ、彼のプロフィールにこれはどのように可能ですか?これを行うプラグインはおそらく? Thans!何かが助けになるでしょう!Wordpressユーザーリンク投稿

答えて

0

流れは次のようにされています

  1. リンクで
  2. ページをカスタム登録ページを作成し、フォームを送信$_POST
  3. カスタム登録ページへの登録ページはの値を読み取りありません投稿されたリンクを $_POSTから事前入力して <input type="hidden">フィールド
  4. ユーザーが登録ページを送信すると、wp_user_createadd_user_meta関数を使用してプロファイルを設定しますe。

私は、プラグインを使用することは残念ですが、特にWPプラグインは通常非常に高品質ではないと主張します。

これは検証なしのベアボーンの例です。そのまま使用しないでください。

<?php 
/** 
* Template Name: Custom registration 
*/ 

// If the link info is missing, go back to the link submission page 
$link = false; 
if (!isset($_POST['user_submitted_link']) || !isset($_POST['user_link'])) { 
    wp_redirect('/link-submission-page'); 
} else { 
    $link = isset($_POST['user_submitted_link']) ? $_POST['user_submitted_link'] : $_POST['user_link']; 
} 

// If the registration form was submitted 
// the $_POST['user_link'] will be set and we can 
// register the user 
if (isset($_POST['user_link'])) { 
    $new_user = wp_create_user($_POST['email'], $_POST['password'], $_POST['email']); 
    if ($new_user) { 
     add_user_meta($new_user, 'user_link', $_POST['user_link']); 
     // User account is created, you can redirect to login or do whatever here 
    } 
} 

// Render the registration form if we have a $link 
if ($link) : ?> 
    <form action="<?php the_permalink(); ?>" method="POST"> 
     <input type="email" name="email"> 
     <input type="password" name="password"> 
     <input type="hidden" name="user_link" value="<?= $_POST['user_submitted_link']; ?>"> 
     <button>Register</button> 
    </form> 
<?php endif; 

これはカスタムページテンプレートです。 custom-register.phpまたは何かをテーマフォルダに保存し、WPで新しいページを作成し、右側のページテンプレートドロップダウンを使用してこの「カスタム登録」テンプレートを選択します。

これを行うには、リンク提出ページでuser_submitted_linkという名前のフィールドに値を送信する必要があります。

これで十分です。テストされていないコードです。保証はありません。

+0

ありがとうございます!私はそれに取り組んだ。私は後でそれがある場合、あなたは忠実な質問をすることができますか? –