web-dev-qa-db-ja.com

複数のURLを同じページにマッピングする

私は私のものとほとんど同じような要件でこのページに出くわした

同じページへの複数のエンドポイント

私は同じ機能を達成する必要がありますが、私はまたこれらすべてのURLがマップされるページにいくつかのパラメータを渡したいと思います。例を言う

http://mysite.com/test/link1
http://mysite.com/test/link2 
http://mysite.com/test/link3 

同じURLにマッピングしたい

http://mysite.com/test/finalDestination

それと一緒に私はまた他のいくつかのパラメータを送信したいと思います

  1. ユーザーのメールアドレス
  2. ユーザー名

私は私のカスタムロジックのためにそのページでそれらを使うことができるように私はPOST requestのリクエストパラメータとしてそれらを送ることができJSP/Javaでそれをする方法を知って

どのように私はこれを達成することができますphp.myを使用してワードプレスですprefrencesは、任意のクエリ文字列を使用することではありません。

それとも私はのようにURLを作成する場合のように可能ですか

http://mysite.com/test/user1
http://mysite.com/test/user2 
http://mysite.com/test/user3

user1などがデータベースから取得され、それらがアプリケーションを通じて一意であることを確認し、これらのURLを同じエンドポイントにマッピングすることができます。最終ページでユーザー名を取得する方法を教えてください。

前もって感謝します

1
Umesh Awasthi

あなたはあなたが言及した質問と同じ答えを使うことができます(私はそれに答えました)。引数を渡すように変更する方法は次のとおりです。

<?php
    add_action('init', 'add_my_rule');

    function add_my_rule()
    {
        global $wp;
        $wp->add_query_var('args');

        add_rewrite_rule('test\/finaldestination\/(.*)','index.php?pagename=about&args=$matches[1]','top');
    }
?>

'finaldestination'が常に同じで、ページ名(slug)が 'about'であると仮定します(両方を変更できます)。このページにカスタムテンプレートを適用し、テンプレート上でこれを行います。

//if you visit http://.../test/finaldestination/name/romeo, then $params will be name/romeo. You can explode this and get the value.
$params = get_query_var('args');

このコードをファイルに入れたら、Settings>Permalinksに移動して保存ボタンをクリックしてください。私はこれを試したことはありませんが、最近のプロジェクトで似たようなものを使っていて、うまくいくと確信しています。

1

ページのメインインスタンスを参照して、重複ページのヘッダーに正規のURLを追加するようにしてください。とインデックス)。

それが普通のWordPressユーザーであるならば、テーマのauthor.phpまたはパーマリンク%author%にも行くでしょう。そのようなことについてのデータにアクセスすることができます。

$author = get_user_by('slug', $author_name);
$author_id = (int)$author->ID;
$name = $author->first_name.' '.$author->last_name;

WP Codex:get_user_by()

0
Martin Zeitler