私は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ファイルは次のようになります。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
私は http://codex.wordpress.org/Using_Permalinks を見ましたが、賢くはなりません。
2つ質問があります。
UPDATE
説明のためにさらに情報を追加しています。
私のURLは現在このように作成されています:
Url = get_permalink().'?bid='.$brand->id.'&name='.$brand->name;
私はここで同様の方法を使用しました:
http://storelocator.no/search/?brandID=4673&storeID=0&brand=Moods+of+Norway
カスタム投稿タイプを使用することは私が検討した選択肢でしたが、デザイナー/ブランドがギャラリーに対してリンクされているので(そしてこれから登場する他のテーブルへのリンクが増えているので)、私自身のテーブル構造が必要です。そのため、WP POST表にブランドデータを保存することはできませんでした。
だから私はこれを知る必要があります:
私は自分自身で書き換え規則についてあまり知りません(または知りませんでした)(しかし だれもしていないようです )しかし、ここでの他のいくつかの答えに基づいて、私はこれをうまくいきました。 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
で始まるもの)を追加する必要があります。しかし基本的なものはうまくいくはずです。
<?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;
}
最初に質問があります:次のようなURLをどのように取得していますか?
http://www.example.com/designers/?id=43&name=designer+name
これらはWordPressの標準URLではありません。あなたが想像するのはshouldが動作するということですか、それともあなたのサイトは実際にそのように動作するのですかもしそうなら、それらのURLはどのようになったのでしょうか?高度にカスタマイズされたサイトですか?誰がそれをカスタマイズしました;あなた、または他の誰か?
.htaccess
についてつまり、邪魔にならないように.htaccess
から始めます。あなたのものは、他のすべてのWordPressインストールの.htaccess
ファイルと実質的に同じです。ただし、1。)は、URLサブディレクトリで提供されます(そして、違いは些細です)、2。)WordPressがどのようにURLを不正にルーティングするか、3。)実際に.htaccess
を実際に必要とするまれな高度なインストールを除く方法を理解していない人がいました(そして、なぜあなたがそれをする必要があるのかわからない場合、チャンスはあなたがしないほぼ100%です。)
次に、最初のパスセグメントにカテゴリ名を含む望ましいURL形式は、パフォーマンス上の理由でWordPressコミュニティが顔をしかめるパターンです。これを参照してください。
基本的に問題は、 "Pages"(つまり$post->post_type=='page'
)の握りが多い場合、WordPressはすべてのページ読み込みのすべてのURLを比較しますすべてのページのURLを使用すると、システムの速度が低下する可能性があります。とは言っても、もしあなたが少数のPagesしか持っておらず、あなたがトラフィックの多いサイトを持っていないなら、それを汗をかかないことは私の意見です。
(ソース: mikeschinkel.com )
それでは、質問に進みましょう。
はい。 URLをクリーンアップすると、キーワード密度が向上します。とはいえ、私の意見ではSEOには検索エンジンが見るものよりも多くのものがあり、あなたのURLをより親しみやすくすることで人々に自信を与え、リンクする可能性を高めますあなたのサイトをブログで共有し、リンクをTwitter、Facebook、その他で共有します。それには2つの利点があります。検索エンジンに表示されるリンクが増え、共有からの露出が増えます。
個人的に私はそれがどのように服を着るかとして考えるのが好きです。あなたが本当に乱雑な場合、人々はあなたが細心の注意を払っている場合よりもあなたについての潜在意識が低いだろう。同じことがURLにも当てはまると思います。クリーンでユーザーフレンドリーなURLがあれば、家は整然としています。ずさんなURLを使用している場合、サイトは "feel"と同じではなく、再びIMOになります。 (厄介なURLは、LinkedInを使うのが嫌いな理由の1つです。たとえば、TwitterのようにURLに注意を払えば、もっと成功したと思います。)
この記事やCodexのこのページは役立つと思いますか?
設定パーマリンクサブパネル (コーデックス上)
基本的に、パーマリンクテンプレートを設定して保存する必要があります。 WordPressがそれらを保存する前に、.htaccess
の許可設定を変更するためにFTPを使用する必要がある場合があります。このスクリーンショットで何をする必要があるかを説明できれば幸いです。
(ソース: mikeschinkel.com )
これがあなたの質問に答えるかどうか、もしそうでなければあなたが行き詰まっている場所を教えてください。
さらに、WordPressのパーマリンクに関する質問に対する他の回答がたくさんありますここWordPress回答;これらのいくつかは、あなたにとっても役立つかもしれませんが、順不同です。
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%
に変更しましたが、うまくいきそうです。