1

WordPress のパーマリンクがどのように機能するかについて、特に Wordpress 自身の使用法を超えて、少し混乱しています。私のパーマリンクは次のようなものです:

%post_id%-%post_name%

しかし、single.phpページ自体に別のリンクを配置したいのですが、クエリ文字列が異なります。クリックすると、パーマリンク構造は次のようになります。

%mystring%-%post_id%-%post_name%

から値を取得したい$_GET['action']ので、次のようにします。

$_GET['action'] = %mystring%

私の計画は、次のように解釈することです。

if('xx' == $_GET['action']){
   //do xx stuff
} else if ('yy'==$_GET['action']){
   //do yy stuff
} else {
   //show the single post as a single.php always shows
}

つまり、$_GET['action']オプションで解析したいということです。クエリ文字列で利用できる場合でも解析しない場合は、ページを正しくレンダリングしたいと考えています。

では、これを行うには、実際にどこで働けばよいのでしょうか? <a>また、タグのリンクを作成するにはどうすればよいですか? 通常、次の方法でリンクを作成します。

<a href="'.the_permalink().'">TEXT</a>

ご存知のとおり、投稿の元のパーマリンクの前にテキストを追加する必要があります。

前もって感謝します。

4

1 に答える 1

7

パーマリンク構造をそのままにして、カスタム書き換えルールに関する私の回答を確認してください。

このようにコードを適応させることができます。

function my_rewrite_rules($rules)
{
    global $wp_rewrite;

    // the key is a regular expression
    // the value maps matches into a query string
    $my_rule = array(
        '(.+)/(.+)/?$' => 'index.php?pagename=matches[2]&my_action=$matches[1]'
    );

    return array_merge($my_rule, $rules);
}
add_filter('page_rewrite_rules', 'my_rewrite_rules');


function my_query_vars($vars)
{
    // this value should match the rewrite rule query paramter above

    // I recommend using something more unique than 'action', as you
    // could collide with other plugins or WordPress core

    $my_vars = array('my_action');
    return array_merge($my_vars, $vars);
}
add_filter('query_vars', 'my_query_vars');

これで、ページはおよびmy_pageで利用できるようになります。http://example.com/whatever/my_pagehttp://example.com/my_page

whateverを使用して値を取得できますget_query_var('my_action')

免責事項

これは、子ページまたはページの添付ファイルを表示するときに望ましくない影響を与える可能性があります。リライトで識別子を渡すことで、これを回避できます。

http://example.com/my_identifier/whatever/page

注: これを行うには、書き換えルールを編集する必要があります。コードを変更するたびに、パーマリンク構造を再保存してルールを「フラッシュ」する必要があります。

于 2010-07-15T18:57:07.393 に答える