作成者固有のURLで作成者固有のページを作成しようとしていて、うまく機能していましたが、このURLを作成したときに次の2つの要因を考慮していません
これが私の最初のルールです
function add_my_rule() {
global $wp;
$wp->add_query_var('args');
add_rewrite_rule('writer\/(.*)','index.php?pagename=writer&args=$matches[1]','top');
/*global $wp_rewrite;
$wp_rewrite->flush_rules();*/
}
add_action('init', 'add_my_rule');
これはURLの作業ファイルでした
www.myblog.com/writer/umesh-awasthi ,
しかし、同じ名前の著者が複数存在する可能性があり、これにより問題が発生します。したがって、SO
www.myblog.com/writer/001/umesh-awasthi
ここで、001
は、常に一意のユーザーIDです。
2番目の問題はページングに関するものです。著者ページでページングを作成できますが、ユーザーが2番目のページをクリックすると、URLが次のようになります。
http://localhost/blog/wordpress/writer/umesh-awasthi/page/2/
私のURL書き換えルールに従って、次のデータをパラメーターumesh-awasthi/page/2
として取得します。これは、著者名をumesh-awasthi
として期待するため、クエリが機能しないことを意味します。 umesh-awasthi/page/2
として
私の質問は、3つの異なる変数で次の方法でデータを取得するようにルールを書き換えることができますか
function add_my_rule() {
global $wp;
$wp->add_query_var('args');
$wp->add_query_var('arg_username');
add_rewrite_rule('writer/([0-9]+)/([^/]*)/page/([0-9]+)','index.php?pagename=writer&args=$matches[1]&arg_username=$matches[2]&paged=$matches[3]','top');
add_rewrite_rule('writer/([0-9]+)/([^/]*)','index.php?pagename=writer&args=$matches[1]&arg_username=$matches[2]','top');
/*global $wp_rewrite;
$wp_rewrite->flush_rules();*/
}
add_action('init', 'add_my_rule');
これでうまくいくはずです。 writer/user_id/username(usernameはリライトでは使用されませんが、必ず機能させるためのものです。2番目のリライトは、ページ区切りを追加する点を除いて同じです)。
編集:上記のコードでarg_usernameを追加しました。