EDIT8にジャンプして、これをどのように解決したかを確認してください
私がWordpressブログを持っているとしましょう: www.animals.com
. テーマ ディレクトリに特定の PHP ファイルがあります: www.animals.com/wp-content/themes/mytheme/db.php
. また、そのページ用のカスタム テンプレートがあるので、Wordpress の管理パネルに新しいページを作成して : を表示しdb.php
ますwww.animals.com/database
。
したがって、ライオンについて何か読みたい場合は、次のように移動しますwww.animals.com/database/?animal=lion
(これが、PDO などを使用して、$_GET['animal'] からの値をクエリに挿入して、PHP を作成することに決めた方法だからです)。
www.animals.com/database/?animal=lion
今、私はとしてアクセスしたいと思いますwww.animals.com/lion
。
.htaccess または Wordpress Rewrite を使用する必要がありますか? .htaccess は、Wordpress フォルダーのルート (wp-config.php とそれらのファイルを含む) またはテーマ ディレクトリのどこに配置すればよいですか?
ルートからのRewriteBase /
ものには、デフォルトでWordpressからのものがあります。私が望むものを達成するために何を書くべきですか?既存のコードの前または後に配置する必要がありますか?
編集: これは私のpublic_html .htaccess であり、これが私が本当にやりたいことです: 私はウェブサイトを持っています:www.domain.com
これを入力するとhttp://www.domain.com/dios/?dios=agni
、アグニ神に関する情報が表示されます。www.domain.com/dioses/agni
アグニ神に関する情報にアクセスするために入力したいと思います。PHP ファイルが入っています 動作しwww.domain.com/wp-content/themes/smitespain/dios.php
ていません x_x
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^dioses/(\w*)$ dios/?dios=$1 [NC,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
EDIT2 : 私はマルチサイトを使用しています(EDIT4 を確認してください)。また、/database/ /dios/ および /dioses/ は、私が作成した実際のフォルダーではありません。これは、Wordpress で作成したページの名前です。問題は、タブのタイトルに神の名前が表示されるようになったことです:Sは、変数 $_GET['dios'] が設定されていることを意味しますが、ファイル (dios.php) をロードしません =/
EDIT3 : 特に domain.com/dios/?dios=agni にアクセスする必要があります。これは、PHP ファイル (dios.php) が wordpress から get_header() をロードできる URL であるため、ファイルに直接アクセスできないためです。
EDIT4:マルチサイトのものを削除することにしました
EDIT5:これらは私が持っているWordpressページ
ですdomain.com/dioses/
:(www.domain.com/wp-content/themes/smitespain/dioses.php)
domain.com/dios/?dios=thor
(www.domain.com/wp-content/themes/smitespain/dios.php)
EDIT6:私はワードプレスコーデックスで何かを読んでいました..そして、私が行きたい場合は、に行く
ことでdomain.com/dioses
アクセスできることに気付きました。アドレスバーのURL:(
問題は、これを試してみると、「?dios=thor」なしで「dios」ページに移動することですdomain.com/index.php?pagename=dioses
domain.com/?pagename=dioses
Rewritebase /
RewriteRule example/test ?pagename=dioses
domain.com/example/test
domain.com/dioses
RewriteRule example/test ?pagename=dios&dios=thor
EDIT7:ワードプレスの書き換えを使い始めました。これをテーマのfunctions.phpに追加しました:
function my_rewrite_rules() {
add_rewrite_rule(
'blah',
'index.php?pagename=dios&dios=agni',
'top'
);
}
add_action( 'init', 'my_rewrite_rules' );
そして再び..それは ?dios=agni なしでページ dios をロードします
EDIT8:そして最後に、私はそれを機能させることができました=)
私が知る必要がある最初のことは、新しいものは代わりに?dios=XXXX
利用できなくなり$_GET['dios']
、呼び出す必要がある$wp_query->query_vars['dios']
ので、これを私のテーマのfunctions.phpに追加しました
function add_query_vars($new_var) {
$new_var[] = "dios";
return $new_var;
}
add_filter('query_vars', 'add_query_vars');
function add_rewrite_rules($rules) {
$new_rules = array('([^/]+)' => 'index.php?pagename=dios&dios=$matches[1]');
$rules = $new_rules + $rules;
return $rules;
}
add_filter('rewrite_rules_array', 'add_rewrite_rules');
$wp_query->query_vars['dios']
実際に設定されていることを確認し
てから、通常のルールを追加します