web-dev-qa-db-ja.com

著者のURLの書き換え

デフォルトの作者パーマリンクは次のとおりです。

http://domain.com/author/{username}

どうすればこのようなことができますか?

http://domain.com/author/{username}/songs 
http://domain.com/author/{username}/books
http://domain.com/author/{username}/movies

誰かがパーマリンクの曲を訪れた場合、wpはそれぞれの作者の曲を表示するはずです。誰かが本のパーマリンクを訪れた場合、wpはそれぞれの作家の本を表示するべきです。どうすればこれを行えますか。

後で編集mySQLテーブル:favs

  • id
  • post_id
  • author_id
  • fav_type(歌、本、映画)
1
Robert

曲、本などにカスタム投稿タイプを使用しているとします。

function add_rewrite_rules($rules) {
    $newrules['author/([^/]+)/songs/?$'] = 'index.php?post_type=songs&author=$matches[1]';
    $newrules['author/([^/]+)/songs/page/?([0-9]{1,})/?$'] = 'index.php?post_type=songs&locations=$matches[1]&paged=$matches[2]';

    $rules = $newrules + $rules;
    return $rules;
}

function flushRules() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
add_filter('rewrite_rules_array', 'add_rewrite_rules');

/* This function should only really be run once per change of rules - comment out */
add_filter('init','flushRules');

"index.php?post_type = songs&author = username"の上のクエリ文字列を試して、あなたがあなたのサイトで正しい投稿リストを得ていることを確認してください(それらをテストするためにパーマリンクを無効にする必要があるかもしれません)。

その後、関数にルールを追加できます(各投稿タイプのページ付きルールに注意してください)。

私は今ライブサイトでまさにこれをしているので、それは可能です - ちょうどルールを正しくするために少しの忍耐を必要とします。

カスタム投稿タイプを使用していない場合は、上記のクエリ文字列をpost_type = xxxからtaxonomy = tagname、または必要なリストを取得するために必要なものに変更できます。

3
Chris