2016-05-05 12 views
0

、APIを書き換える: だから私のHOME_URLがhttp://localhost/wordpressである(任意の仮想ホストエントリを作成していない)Wordpressのは、私は私のローカルマシンにワードプレスをインストールしているadd_rewrite_rule問題

を私は今page_idの= 19でテストをという名前のページを作成しました

:それは http://localhost/wordpress/?page_id=19&group=abc

私の.htaccessに変換する必要があります 、

http://localhost/wordpress/group/abcとして任意の要求があるだろうとき:私は次のように書き換えを使用する必要があります

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase /wordpress/ 
    RewriteRule ^index\.php$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /wordpress/index.php [L] 
</IfModule> 

#1 END WordPressの

私が試したもの:

add_action('init', function() { 
    global $wp_rewrite; 
    $wp_rewrite->flush_rules(); 
    add_rewrite_rule('^group/([^/]+)', 'index.php?page_id=19&group=abc', 'top'); 
    add_rewrite_tag('%group%', '[A-Za-z]+'); 
}); 

しかし、私は404エラーを取得していますhttp://localhost/wordpress/group/abcにアクセスしようとしていたときに。

私は何か間違っていることをお勧めします。

ありがとうございます。ロットresaerch後

+0

あなたはREWITEルールをリフレッシュするパーマリンクが保存されている:我々はget_query_var('group')

を経由して書き換えルールを追加する別の方法をそれにアクセスする必要がありますか? – BenB

+0

@batz、はい、私はすでにadd_rewrite_ruleを変更してパーマリンクを保存して、これをデバッグしようとしました。しかしそれはうまくいかなかった。 –

+0

ページIDはおそらくpost_idにする必要がありますか? – David

答えて

1

が見つかりましたこの:

  • それは常に代わりpage_idののページ名を使用しても安全です。
  • 使用するカスタムクエリvars(ここではグループ)を登録する必要があります。
  • またrewrite_rules_array

という名前のフィルタは、したがって、上記のコードは、(追加ページ名はテストです)のように見えるかもしれませんがあります:

add_filter('query_vars', function($query_vars) { 
    $query_vars[] = 'group'; 
    return $query_vars; 
}); 

add_action('init', function() { 
    global $wp_rewrite; 
    $wp_rewrite->flush_rules(); 
    add_rewrite_rule('group/(.*)', 'index.php?pagename=test&group=$matches[1]', 'top'); 
}); 

しかし、我々は$_GET['group']経由でグループ値にアクセスすることはできません。

add_action('rewrite_rules_array', 'rewrite_rules'); 
function rewrite_rules($rules) { 
    $newrules = array(); 
    $newrules[ 'group/(.*)/?$' ] = 'index.php?pagename=test&group=$matches[1]'; 
    return $newrules + $rules; 
}