前提・実現したいこと
記事の投稿者ページ(author.php
)で表示されるURL(http://localhost:8001/author/ユーザー名/
)のユーザー名の部分を5桁の数字などに変更したいのですがどうすればいいでしょうか?
一番の理想形:http://localhost:8001/カスタム投稿名/author/5桁の数字/
最低限実現したい形:http://localhost:8001/author/5桁の数字/
色々と調べたのですが、参考になる記事がプラグイン前提なものばかりでこれ以上進まない状態です。
rewrite_rules
で変更するのは分かるのですが、どうやってユーザー名を変えるのかが分からない状態です。
下記コードでユーザー名以外のURLは変えることが出来ました。。。
// http://localhost:8001/posts/writer/ユーザー名/ になった function cng_author_base() { global $wp_rewrite; $author_slug = 'posts/writer'; $wp_rewrite->author_base = $author_slug; $wp_rewrite->flush_rules(); } add_action('init', 'cng_author_base');
下記コードでは、ユーザー名のみのURLになりました
// http://localhost:8001/ユーザー名/ になった // The first part // add_filter('author_rewrite_rules', 'no_author_base_rewrite_rules'); function no_author_base_rewrite_rules($author_rewrite) { global $wpdb; $author_rewrite = array(); $authors = $wpdb->get_results("SELECT user_nicename AS nicename from $wpdb->users"); foreach($authors as $author) { $author_rewrite["({$author->nicename})/page/?([0-9]+)/?$"] = 'index.php?author_name=$matches[1]&paged=$matches[2]'; $author_rewrite["({$author->nicename})/?$"] = 'index.php?author_name=$matches[1]'; } return $author_rewrite; } // The second part // add_filter('author_link', 'no_author_base', 1000, 2); function no_author_base($link, $author_id) { $link_base = trailingslashit(get_option('home')); $link = preg_replace("|^{$link_base}author/|", '', $link); return $link_base . $link; }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。