WordPress Rewrite API

ワードプレス 「と呼ばれる本当に便利なAPIを持っています 書き換えAPI「私はすでに「URL書き換え」をしていると思いますが、これはURLを読みやすくするプロセスです。たとえば、http://mysite.com/?page = 12&category = 12&author = 47のように書かれたURLは見栄えが良くありません。それを覚えるのは難しく、検索エンジンはそれほど気に入らない。そのため、ほぼすべてのCMSに、URLを「書き換え」て次のようにする組み込み関数があります。http://mysite.com/category/business/finance.


書き換えAPIとWP_Rewriteクラス

WordPress内では、このプロセスは パーマリンク構造. デフォルトのパーマリンク構造からカスタム構造に切り替えると、書き換えAPIが自動的にアクティブになります。これは完全に自動です。しかし、独自のカスタム書き換えルールを作成する必要がある場合があります.

この投稿では、簡単な関数を作成して、簡単なカスタム書き換えルールを作成します。 $ _GET [‘referrer’]と同等のリファラー値を取得したいとしましょう.

Codexを見ると、rewrite APIページで、このAPIに6つの組み込み関数があることがわかります。書き換えの最も一般的な使用法は、これらの関数を使用することです。そのためのチュートリアルがたくさんあります。そのため、関数の代わりにフィルターを使用します。はい、書き換えAPIはフィルターでも使用できます。これらのフィルターは、 WP_Rewriteクラス コーデックスページ.

新しいクエリ変数を追加する

まず、新しい書き換えルールが設定されたことをWordPressに通知する関数を作成する必要があります。これはの仕事です add_rewrite_rule() そして add_rewrite_tag()  関数ですが、query_varsおよび rewrite_rules_array フィルター。そのためには、2つの関数と2つのフィルターを作成する必要があります。最初の関数は単に新しい変数をquery_varsフィルターに追加し、2番目の関数はこの新しい変数をグローバル書き換えルールに登録します。

/ *
|--------------------------------------------------------------------------
|書き換えを開始します。サンプル:http://mysite.com/referrer/remi
|--------------------------------------------------------------------------
* /

//新しい変数を登録します
function rc_add_query_vars($ vars){
$ vars [] = "リファラー"; // URLに表示される変数の名前
$ varsを返します。
}

//関数をquery_varsにフックします
add_filter( 'query_vars'、 'rc_add_query_vars');

//新しい書き換えルールを既存のものに追加します
function rc_add_rewrite_rules($ rules){
$ new_rules = array( 'referrer /([^ /] +)/?$' => 'index.php?referrer = $ matches [1]');
$ rules = $ new_rules + $ rules;
$ rulesを返します。
}

//関数をrewrite_rules_arrayにフックします
add_filter( 'rewrite_rules_array'、 'rc_add_rewrite_rules');

このコードをプラグインファイルまたはテーマのfunctions.phpファイルに追加したら、[設定]> [パーマリンク]に移動し、パーマリンク構造を保存します。このアクションが必要です。これで、この種類またはURL(http://mysite.com/referrer/your-name)でサイトにアクセスできるようになります。特定のページにリダイレクトする場合は、index.php?referrer = $ matches [1]をindex.php?pagename = my-page&referrer = $ matches [1]で変更します。ここで、「my-page」は、ナメクジにリダイレクト.

変数値を取得する

書き換えルールが設定されたので、変数の値にアクセスすることができます。ただし、単純な$ _GET [‘referrer’]を実行しても、値は得られません。 URL vars値を取得するには、「template_redirect」フィルターに関数をフックする必要があります。 「init」フィルターへのフックは早すぎます。次に、$ wp_queryオブジェクトを介して必要な変数にアクセスできます。これを行う方法の簡単なサンプルを次に示します。

// URL変数を取得します
function rc_get_my_vars(){
グローバル$ wp_query;

if(isset($ wp_query-> query_vars ['referrer'])){
$ referrer = get_query_var( 'referrer');
}
}

//関数をtemplate_redirectにフックします
add_action( 'template_redirect'、 'rc_get_my_vars');

次に、$ referrer値をエコーするか、通常のGET変数で行ったようにそれを使用できます。.

もちろん、複数の変数を使用して変更することもできます。

// rc_add_query_vars()内
$ vars [] = "リファラー";
$ vars [] = "キャンペーン";

// rc_add_rewrite_rules()内
$ new_rules = array( 'referrer /([^ /] +)/([^ /] +)/?$' => 'index.php?pagename = my-page&referrer = $ matches [1]&campaign = $ matches [ 2] ');

URLの書き換えを使用するには、PHPのmod_rewriteモジュールを有効にする必要があることを忘れないでください。.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map