0

最初のプラグインを作成しようとしています。

投稿を作成するために必要な情報を収集するフォームがあります。投稿がデータベースに入るのを許可する前に、ユーザーに TOS への同意を強制する必要があります。

チェックボックスとリンクがあります。リンクは TOS ページ (私のカスタム PHP ページ) に移動し、ユーザーが TOS を受け入れると、データが入力され、チェックボックスがオンになっている FORM に戻ることができます。

ユーザーは、ボックスをオンにして投稿を送信することもできます。

私の質問は、既存の Web サイトと一致するように TOS ページをラップする方法です。ユーザーが Web サイト用に選択したテーマを使用するように、PHP ページをラップしたいと考えています。また、元のようにユーザーのテーマに包まれた形に戻りたいと思っています。

フックを使用してフォームを開くので、そこまでは問題ありません。

安価で簡単な方法ではなく、正しい方法でこれを行う方法を理解したい.

どうぞよろしくお願いいたします。

<a href="test.php">To TOS</a>

<?PHP
    echo '<HTML><HEAD></HEAD><BODY>Terms Of Service</br>1. TOS 1</br>2. TOS 2<BODY></HTML>';
?>
4

4 に答える 4

0

それにはいくつかの手順があります。私がそれを行う方法は以下のとおりです

  1. フォームのショートコードを作成する

    add_shortcode( 'myshortcode', 'my_shortcode_handler' );

  2. 関数 my_shortcode_handler を作成します

    function my_shortcode_handler( $atts, $content = null ) { include ('myhtmlform.php'); }

  3. myhtmlform.php を作成し、ロジックを挿入します。

  4. フォームが必要なページで「[myshortcode]」を呼び出します

PS プラグインのメイン ファイルにすべてのコードを挿入します。

よろしく

于 2013-06-25T15:46:47.357 に答える
0

最良の (そして最も複雑な方法) は、書き換えルールと書き換えタグを追加することです。

次のようなタグを追加します: http://codex.wordpress.org/Rewrite_API/add_rewrite_tag

そして書き換えルール: http://codex.wordpress.org/Rewrite_API/add_rewrite_rule

次に、YOURDOMAIN.com/YOUR-URL のようなものへのポインターがあり、グローバル WP クエリにテンプレート ファイルを指す適切な変数があります。これは、アクション「template_redirect」で実行できます。

そう:

//add the rewrite tag to the WP Query (called on the init action, or earlier)
add_rewrite_tag('%terms-of-service%','([^&]+)');

//add a rewrite rule: (init or earlier)
add_rewrite_rule('^terms-of-service/?','index.php?tos=true','top');

//And then add an action on 'template_redirect':
add_action( 'template_redirect', 'tos_query' );

function tos_query(){

   global $wp_query;

   if( isset( $wp_query->query_vars['terms-of-service'] ) ){

      locate_template( --YOUR URL-- )

   }

}

WordPress の rewrite API は厄介な地雷原であることを覚えておいてください。使用する必要があります。

    global $wp_rewrite;
    $wp_rewrite->flush_rules();

すべてが機能する前に、おそらく...

このプラグインには、リダイレクトを処理する優れた方法があります: http://wordpress.org/plugins/simple-portfolio/ (ただし、関数ではなく投稿タイプ用です)

于 2013-06-25T16:46:42.670 に答える