投稿がまだない(0件)ユーザーのアーカイブページに、ブロフィール欄を設置する必要がありました。
そこで問題になったのがまだ投稿がのでget_post
や get_the_author_meta
からIDを取得することができないことでした。
今回は不特定多数のユーザーでも対応できる、URLから投稿ユーザーのIDを取得する方法を見つけましたのでご紹介します。
もくじ
PHP の basename() を利用する
basename 関数 はパスの最後にある名前の部分を返かえします。
basename http://php.net/manual/ja/function.basename.php
例えば、投稿者アーカイブページのURLが下記の場合、
hogehoge.ad-mk.com/post/author/hanako
basename 関数を使うと一番最後の 『 hanako 』 が取得できます。
$url = $_SERVER["REQUEST_URI"]; // 例 hogehoge.ad-mk.com/post/author/hanako $authorname = basename ( $url ); echo $authorname; // hanako
get_user_by() で user データのフィールドを取得
こうして取得した値を元に、ユーザーIDを取得します。
get_user_by() でユーザを検索します。マッチするとWP_User オブジェクトが取り出せるので、IDを指定して
ユーザーIDの取得が完了です。
$authorname = get_user_by('login', $authorname ); $user_ID = $authorname->ID;