0
     
add_filter('query_vars', 'add_query_vars');
 
function add_rewrite_rules($aRules) {
    $aNewRules = array('societies/([^/]+)/?$' => 'index.php?pagename=societies&sid=$matches[1]');
    $aRules = $aNewRules + $aRules;
    return $aRules;
}
 
add_filter('rewrite_rules_array', 'add_rewrite_rules');


function add_query_vars($aVars) {
    $aVars[] = "page_id";    // represents the name of the variable as shown in the URL
    return $aVars;
}
 
add_filter('query_vars', 'add_query_vars');

そのため、リダイレクト時にカスタム get 変数を使用しようとしています。現在、サイトのセクション zzz.net/dashboard?page_id=2278 に移動するリダイレクトがありますが、404 ページを表示できないため、このコードを追加しました。主な問題は、自分が何をしているのか本当によくわからないということです。

リダイレクトで ?page_id=2278 などを使用する理由は、ダッシュボード ページに到達する前に、ユーザーがどこから来たのかを知ることができるようにするためです。

アドバイスと指示は、単なる回答よりも役立つ場合があります。いずれにせよ、ご覧いただきありがとうございます。

4

1 に答える 1

0

'page_id'という名前のGET変数は、ページオブジェクトをクエリするときにWordpressコアによって使用されます。

逆に、クエリを「p = 2786」に変更すると、WordpressはIDが2786の投稿を検索しようとします。

URLにその変数を含めることで、Wordpressは混乱し、GETリクエストで定義されたIDを持つページを返そうとします。このような名前の競合を防ぐために、グローバルスコープ内でアクセス可能な名前付き変数にプレフィックスを追加するのが常に最善です。

GET変数の名前を別の名前(つまり、WJ_page_id)に変更して、メインのWordpress変数と競合しないようにします。

于 2012-10-11T21:05:20.940 に答える