web-dev-qa-db-ja.com

NextGENギャラリーを使用したカスタムパーマリンク

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;
}
5
trrrrrrm

rewrite API を見たことがありますか?多分これはあなたの問題を解決することができますか?
書き換えAPIを使用している場合は、おそらくNextGen書き換え機能をオフにする必要があります。

2
Steven

追加のエンドポイント

あなたはすべての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;
}

これは投稿のみを対象としています。ギャラリーのあるページもサポートしたい場合は、冗長なページグループごとに投稿を追加する必要があるため、はるかに複雑になります。

1
Jan Fabry

NextGen設定でパーマリンクを有効にしましたか? [ギャラリー] - > [オプション] - > [一般]の順に選択し、[パーマリンクを有効にする]を選択してから、一般的なパーマリンク設定を1回リセットします。それは世界で最もきれいなURLではありません(それは名前の代わりにページIDをつかみます)が、それは仕事をします。

0
Norcross