アーカイブページのURLから投稿ユーザーのIDを取得する

カスタマイズ
WordPressカテゴリー
Pocket

投稿がまだない(0件)ユーザーのアーカイブページに、ブロフィール欄を設置する必要がありました。
そこで問題になったのがまだ投稿がのでget_postget_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;

 

関数リファレンス/get user by