2012-07-03 14 views
5

私はPHP開発者で、現在CMS /ブログシステムを開発中です。私はワードプレスのようなパーマリンクシステムを追加したい。私はWordPressがパーマリンクを解析する方法について興味があります。例えば、からidpost nameなどのデータを取得する方法:WordPressのpermalinkの仕組みは?

要するに
example.com/id/123/post/example/ 

、私はURLからidpost nameを取得するためのシステムを求めています。私は$id$post_name値は123うとexampleような変数にデータを取得するにはどうすればよい

id/%postid%/post/%postname%/ 

:私のようなタグを使用してWordPressのようなパーマリンク構造を変更するには、ユーザーを有効にしたいですか?私を助けてください。 ありがとうございます。

答えて

0

これは使用しているサーバーソフトウェアによって異なりますが、Apacheでスクリプトを使用する場合は通常mod_rewriteという名前のものを使用します。具体的には.htaccessというファイルを使用します。

このトピックに関するチュートリアルを読むことをお勧めします。 As usual, Google is your friend

5

一般的に利用可能なapacheモジュールmod_rewriteがこれを手助けすることができます。あなたが行うのは、.htaccessファイルの中に書き換えルールを書き込むことです。書き換えによって、通常はファイルシステムに似ていたファンシー構造が$ _GETパラメータとしてPHPファイルに送られます。

たとえば、あなたが何か交換したい場合:代わりにあなたがプルアップindex.phpの場合、

RewriteEngine on 
RewriteRule reactor/([0-9]+)/$ index.php?id=$1 

/reactor/13/

?reactor=13を.htaccessファイルにこの書き換えルールを書くには/炉/ 13 /、あなたのindex.phpファイルは、$ _GET、これを中に表示されるはずです。

Array 
(
    [id] => 13 
) 

今、あなたのHTMLコードのために、それはURLを作るためにあなた次第です思考構造に従ってください。

これらの書き換えルールは混乱する可能性がありますが、論理的な正規表現のパターンに従います。

WordPressはこれらの編集.htaccessファイルをWPにすべて送信する場所よりも強力な方法を採用し、その後WPは内部ルールを使って残りを解決/ルーティングします。

+0

WPソースでリンクを処理する場所はどこですか?私はあなたが正しいと確信しています(作成されたmod_rewriteのルールは非常にシンプル/汎用です)が、これが起こるはずの場所を見れば、私は奇妙な問題を診断するのに役立ちます。 – iX3

+1

WPは実際にはあまりに複雑すぎて1つの場所を指すように抽象化されていません。これはhttps://github.com/WordPress/WordPress/search?q=permalink_structure&source=ccを見て見ることができます – pp19dd