wordpressパーマリンクを/%category%/%postname%
に設定しているので、Nextgenギャラリーを使用しているので、ページにギャラリーがある場合は/cat/page?gallery=10
のようになります。 cat/page/gallery id/
私はwp_rewriteでalotを試してみました...しかし、運はありません...助けが必要ですか?
これは私がテストしているものです.. wordpressから提供された私のコードではありません...道を見つけたときにすべてをその場所に置きます...だから心配しないでくださいflushRules
on init
...どうもありがとう
add_filter('rewrite_rules_array','wp_insertMyRewriteRules');
add_filter('query_vars','wp_insertMyRewriteQueryVars');
add_filter('init','flushRules');
// Remember to flush_rules() when adding rules
function flushRules(){
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
// Adding a new rule
function wp_insertMyRewriteRules($rules)
{
$newrules = array();
//i don't know what should i put here
$newrules[''] = '';
return $newrules + $rules;
//
}
// Adding the id var so that WP recognizes it
function wp_insertMyRewriteQueryVars($vars)
{
array_Push($vars, 'id');
return $vars;
}
rewrite API を見たことがありますか?多分これはあなたの問題を解決することができますか?
書き換えAPIを使用している場合は、おそらくNextGen書き換え機能をオフにする必要があります。
あなたはすべてのpost/page書き換えルールの最後に何かを追加したいので、おそらく単に rewriteエンドポイント を追加することができます。これらは、ページ、投稿、アーカイブなどのすでに生成された規則に追加される、形式/[endpoint_name](/[optional_extra_stuff])?
の正規表現です。
エンドポイントマスク を設定することによって、どの構造体にそれらを追加するかを定義します。これはビットマスクなので、次のように|
演算子を使用してさまざまなグループを組み合わせることができます。EP_PERMALINK | EP_PAGES
はすべてのページとすべてのパーマリンク(完全投稿と日付ベースのアーカイブ)で一致します。エンドポイントのデフォルトリストは wp-includes/rewrite.php
の先頭にあります)です。
次のコードは、ページ、投稿、および日付ベースのアーカイブの既存の書き換え規則に/gallery(/(.*))?
を追加します(何らかの理由で、それらはEP_PERMALINK
に1回とEP_DATE
に1回ずつ生成されます)。
add_filter( 'init', 'wpse4498_init' );
function wpse4498_init()
{
add_rewrite_endpoint( 'gallery', EP_PERMALINK | EP_PAGES );
}
明示的に行うこともできます。これにより、生成されたルールをより細かく制御できます。
書き換えルール自体は非常に簡単です。一般的な投稿ルール(.+?)/([^/]+)
(category/pagename
)を取り、あなたのギャラリー構造を追加します。 NextGENは、パーマリンクが有効になっているときだけでなく、常にそのクエリ変数を追加するので、gallery
変数を使うことができます。
'(.+?)/([^/]+)/gallery/([0-9]{1,})/?$' =>
'index.php?category_name=$matches[1]&name=$matches[2]&gallery=$matches[3]'
追加の書き換え規則を配置するのは難しいです。パーマリンクの構造は/%category%/%postname%/
なので冗長な書き換え規則があり、一般的な(.+?)/([^/]+)
を先頭に置くことはできません。あなたのページは機能しなくなります。添付ファイルのルールは非常に一般的なものであり、URLに到達する前にURLと一致するため、一番下に配置することはできません。追加するのに最適な場所はpost_rewrite_rules
フィルターです。これにより、次のようになります。
add_filter( 'post_rewrite_rules', 'wpse4498_post_rewrite_rules' );
function wpse4498_post_rewrite_rules( $post_rewrite_rules )
{
$post_rewrite_rules = array(
'(.+?)/([^/]+)/gallery/([0-9]{1,})/?$' =>
'index.php?category_name=$matches[1]&name=$matches[2]&gallery=$matches[3]',
) + $post_rewrite_rules;
return $post_rewrite_rules;
}
これは投稿のみを対象としています。ギャラリーのあるページもサポートしたい場合は、冗長なページグループごとに投稿を追加する必要があるため、はるかに複雑になります。
NextGen設定でパーマリンクを有効にしましたか? [ギャラリー] - > [オプション] - > [一般]の順に選択し、[パーマリンクを有効にする]を選択してから、一般的なパーマリンク設定を1回リセットします。それは世界で最もきれいなURLではありません(それは名前の代わりにページIDをつかみます)が、それは仕事をします。