WordpressのわかりやすいURLについてサポートが必要
-
-
@Steven:これは `rewrite`設定のカスタム投稿タイプですか?(ある場合は、 `register_post_type`コードを追加してください.)通常のブログ投稿を作成する場合、そのアドレスは何ですか?@Steven: Is this a custom post type with a `rewrite` setting? (Please add the `register_post_type` code if it is.) If you create a regular blog post, what is its address?
- 0
- 2010-11-02
- Jan Fabry
-
@スティーブ-ああ、あなたがここで尋ねたのを見ます.すごい!@Steve - Ah, I see you did ask over here. Great!
- 0
- 2010-11-02
- MikeSchinkel
-
これはカスタム投稿タイプではありません.これは、$ _ GET()によって渡された情報に基づいてDBからデータを取得する単なるテンプレートです.This is not a custom post type. It's just a template that retrieves data from a DB based on info passed by $_GET().
- 0
- 2010-11-02
- Steven
-
@スティーブン:わかりました.同じテンプレートで処理される `/designer/designer_A`、`/designer/designer_B`などのURLを取得して、URLからデザイナー名に簡単にアクセスできるようにする方法を知りたいですか?次に、これは[独自の書き換えルールの追加](http://wordpress.stackexchange.com/questions/3206/custom-post-type-rewrite-rule-for-author-paging/3218#3218)に関する質問ですか?@Steven: OK, so you want to know how to get URL's like `/designer/designer_A`, `/designer/designer_B`, ... handled by the same template, that can then access the designer name from the URL easily? This is then a question about [adding your own rewrite rule](http://wordpress.stackexchange.com/questions/3206/custom-post-type-rewrite-rule-for-author-paging/3218#3218)?
- 0
- 2010-11-02
- Jan Fabry
-
そのとおりです.しかし、私はカスタム投稿タイプを使用していません.上記の追加情報を参照してください.That's correct. But I'm not using Custom Post Type. See added info above.
- 0
- 2010-11-02
- Steven
-
@Steven:しかし、あなたの `/designer/` URLは、カスタムPHPが機能するテンプレートにリンクされた通常のWordPressページだけですか?(返信に@Janを追加すると、通知が届きます.)@Steven: But your `/designer/` URL, is that just a regular WordPress page linked to a template that does the custom PHP work? (And if you add @Jan to your reply, I get a notification.)
- 0
- 2010-11-02
- Jan Fabry
-
@Jan:ああ、@は実際には関数を持っています.知っておくといい!:) はい、 `/designer/`は、カスタムテンプレートを使用したワードレスのページです.@Jan: Ah, so @ actually has a function. Nice to know! :) Yes, `/designer/` is a page in wordress using a custom template.
- 0
- 2010-11-02
- Steven
-
@ Steve-カスタム投稿タイプを再検討することを強くお勧めします.あなたは車輪の再発明を試みていますが、実際に入手した車輪のセットはすでにWordPressに存在しています.あなたはCPTを使用できないと言います.CPTで認識している障害を回避する方法を尋ねるWordPressAnswersで別の質問をすることを検討しますか?解決策がいかに簡単であるかに驚かれることでしょう.* "Brand" * CPTと* "Gallery" * CPTの*両方*を作成し、それらをリンクします(これを行うにはいくつかの方法があります...)@Steve - I strongly recommend you reconsider Custom Post Types. You are trying to reinvent the wheel and a really got set of wheels already exist in WordPress. You say you can't use CPTs; will you consider maybe asking another question here on WordPress Answers that asks how to get around the roadblock you perceive with CPTs? I'll bet you'll be surprised how easy the solution will be. Create *both* a *"Brand"* CPT and a *"Gallery"* CPT then link them together (there are several ways to do that...)
- 1
- 2010-11-03
- MikeSchinkel
-
2 回答
- 投票
-
- 2010-11-02
私自身、書き換えルールについてあまり知りません(または知りませんでした)(ただし、誰もしません)が、ここでの他のいくつかの回答に基づいて、これを機能させました.
Designers/designer_name/
に一致する新しい書き換えルールを追加します.書き換えルールを「フラッシュ」してデータベースに保存しますが、これはコストのかかる操作であるため、必ず1回だけ実行してください.次に、ページに一致するパターンを設定し、余分な部分をdesigner_name
クエリ変数に保存します. WordPressはこの変数を確認する必要があることを認識していないため、query_vars
フィルターにフックして、それも確認するように指示します.これで、
page-designers.php
テーマファイルでget_query_var( 'designer_name')
を実行すると、デザイナー名が表示されます.ページング(designer/designer_name/page/2
)のような追加のものが必要な場合は、そのための追加の書き換えルール(またはフィード、またはDesigner/designer_name <で始まるもの)を追加する必要があります./code>).しかし、基本的なものは機能するはずです.
&lt;?php /* プラグイン名:WPA 3537 プラグインURI:http://wordpress.stackexchange.com/questions/3537/need-help-with-friendly-urls-in-wordpress 説明:WordpressのわかりやすいURLについてサポートが必要 バージョン:1.0 著者:ヤンファブリー */ register_activation_hook(__ FILE __、 'wpa3537_flush_rules'); 関数wpa3537_flush_rules() {{ add_rewrite_rule( 'designers/([^/] +)'、 'index.php?pagename=designers&amp; designer_name=$matches [1]'、 'top'); flush_rewrite_rules(false); } add_filter( 'query_vars'、 'wpa3537_query_vars'); 関数wpa3537_query_vars($ query_vars) {{ $ query_vars []='designer_name'; $ query_varsを返します; }
I don't know (or didn't know) much about the rewrite rules myself (but it seems nobody does), but based on some other answers here, I got this to work. We add a new rewrite rule that matches
designers/designer_name/
. We "flush" the rewrite rules so they get saved to the database, but make sure to do this only once, since it is an expensive operation. Now, we set up a pattern that will match our page and save the extra part in thedesigner_name
query variable. Since WordPress does not know it must look at this variable, we hook into thequery_vars
filter and tell it to look at that too.Now, in the
page-designers.php
theme file, we can doget_query_var('designer_name')
and it will give you the designer name. If you want extra stuff like paging (designer/designer_name/page/2
), you need to add an extra rewrite rule for that (or feeds, or whatever that starts withdesigner/designer_name
). But the basic stuff should work.<?php /* Plugin Name: WPA 3537 Plugin URI: http://wordpress.stackexchange.com/questions/3537/need-help-with-friendly-urls-in-wordpress Description: Need help with friendly URL's in Wordpress Version: 1.0 Author: Jan Fabry */ register_activation_hook(__FILE__, 'wpa3537_flush_rules'); function wpa3537_flush_rules() { add_rewrite_rule('designers/([^/]+)', 'index.php?pagename=designers&designer_name=$matches[1]', 'top'); flush_rewrite_rules(false); } add_filter('query_vars', 'wpa3537_query_vars'); function wpa3537_query_vars($query_vars) { $query_vars[] = 'designer_name'; return $query_vars; }
-
はい、WordPressのURL書き換えはブラックアートです.練習するときは、暗い側に渡って不可逆的に狂気に陥らないように注意する必要があります.Yes, WordPress' URL rewriting is a black art. One must be careful when practicing lest one cross over to the dark side and be driven irreversibly insane.
- 4
- 2010-11-03
- MikeSchinkel
-
@マイク:私はそれに興味をそそられ(ハロウィーンの時間でなければなりません)、[書き換えルールアナライザー](http://wordpress.stackexchange.com/questions/3606/a-tool-to-analyze-rewrite-rules/3608#3608)リライトランドでの私の発見の痕跡として.@Mike: I got intrigued by it (must be the Halloween time), and wrote [a rewrite rule analyzer](http://wordpress.stackexchange.com/questions/3606/a-tool-to-analyze-rewrite-rules/3608#3608) as a trace of my discoveries in rewrite-land.
- 1
- 2010-11-03
- Jan Fabry
-
完全な答えについては、このスレッドを参照してください:http://wordpress.stackexchange.com/questions/5413/need-help-with-add-rewrite-ruleFor full answer, se this thread: http://wordpress.stackexchange.com/questions/5413/need-help-with-add-rewrite-rule
- 0
- 2010-12-16
- Steven
-
- 2012-03-14
Jan Fabryが書いたすべてのことをしましたが、電話すると:
http://www.mysite.com/customPostTypeSlug/page/id
Wordpressリダイレクト(301)私を:
http://www.mysite.com/customPostTypeSlug/page
私のルールは(「init」アクションによって呼び出されます):
add_rewrite_rule( 'customPostTypeSlug/page/([^/]+)/?' , 'index.php?customPostTypeSlug=page&id=$matches[1]', 'top' );
それから私はそれを洗い流します.
パーマリンクを
%category%/%postname%
から%postname%
に変更しましたが、機能しているようです.I did all Jan Fabry wrote, but when I call:
http://www.mysite.com/customPostTypeSlug/page/id
Wordpress redirect (301) me to:
http://www.mysite.com/customPostTypeSlug/page
My rule is (called by an "init" action):
add_rewrite_rule( 'customPostTypeSlug/page/([^/]+)/?' , 'index.php?customPostTypeSlug=page&id=$matches[1]', 'top' );
Then I flush it.
I change permalink from
%category%/%postname%
to%postname%
and seems to work.
Wordpressでカスタムテンプレートを作成していて、URLでいくつかのデータを渡しています.
現在、私のURLは次のようになっています. http://www.mysite.com/designers/?id=43& ;name=designer +name
URLにはデザイナーIDとデザイナー名が含まれています.
私は本当にこれを使いたいです: http://www.mysite.com/designers/designer+name/
パーマリンク構造が
に設定されています/%category%/%postname%/
私の.htaccessファイルは次のようになります:
http://codex.wordpress.org/Using_Permalinks を見ましたが、賢い.
2つの質問があります:
更新
明確にするために、さらに情報を追加します.
現在、私のURLは次のように作成されています:
Url = get_permalink().'?bid='.$brand->id.'&name='.$brand->name;
ここでも同様の方法を使用しました:
http://storelocator.no/search/?brandID=4673&amp; storeID=0&amp;brand=Moods + of + Norway
カスタム投稿タイプの使用は私が検討したオプションでしたが、デザイナー/ブランドがギャラリー(および今後他のテーブルへのリンク)とリンクしているため、独自のテーブル構造が必要でした.そのため、ブランドデータをWPOSTOテーブルに保存することはできませんでした.
だから私はこれを知る必要があります: