affinger6のプロフィールカードのプロフィール情報が表示されない
ユーザー情報を入力したのにプロフィールカードに何も表示されないという状況になったため、原因と対処方法をまとめておきました。
affinger6を導入してみたものの、プロフィール情報が表示されない場合の対処法をまとめました。同じような状況で困っている方の手助けになれば幸いです。
この記事ではWordpressのデータベースにMySQLを使用していることを想定しています。また、SQLを使ってデータベースを直接編集する必要があるため、SQLの知識がある程度ある方を対象とさせていただきます。
この記事に書かれている方法で発生したいかなる問題においても著者は一切の責任を負いかねます。
プロフィールカードが表示されない原因
今回プロフィールカードに情報が表示されない原因は、wordpressを最初に設定した際に作っていた管理者ユーザーが削除されていたことにありました。どういうことかというと、wordpressの各ユーザーにはuser id
という数値が割当てられているのです。で、affinger6のプロフィールカードは user id
が1
のユーザ情報を表示するようになっているのです。
該当テーマファイルはst-author-master-profile.php
AFFINGERの親テーマにあるst-author-master-profile.phpの5行目に下記の記述があり、(int) $user_id:1
となっている箇所でuser id
が1
を決め打ちで指定していました。
$st_author_id = ( $user_id !== '' ) ? (int) $user_id : 1;
私の場合、user id
が1
のユーザーとは別にuser id
が2
の管理ユーザーを作成し、1
のユーザーは削除していました。そのため、user id
が1のユーザーが存在していない状態になったためにaffinger6のプロフィールカードに何も表示されない状態になりました。
対応方法
原因はわかりましたが、困ったことにwordpressではuser id
はユーザー作成ごとに1つずつ数値がインクリメントされるようになっています。つまり、一度作成したユーザーのuser id
は2度と同じ値が設定されることがないため、wordpressの管理画面からユーザーを作成してもuser id
は1
が割り当てられることは無いのです。
では、どうするかというとデータベースを直接編集して既に存在しているユーザーのuser id
を1
に変更するのです。
SQLを流す前に必ずデータベースのバックアップを保存してください。
下記は実際に使用したSQLになります。
UPDATE wp_posts SET post_author='1' WHERE post_author=‘2’;
UPDATE wp_users SET ID = '1' WHERE ID = ‘2’;
UPDATE wp_usermeta SET user_id = '1' WHERE user_id = ‘2’;
UPDATE wp_comments SET user_id = 1 WHERE user_id = 2;
ALTER TABLE wp_users AUTO_INCREMENT = 2;
上記のSQLでは存在しているユーザーのuser id
が2
の場合を想定しています。実際に存在しているユーザーのuser id
を確認したい場合は下記のSQLを流してみてください。ID
の部分がuser id
になります。
> SELECT ID,user_login,user_email FROM wp_users;
+----+------------+----------------------+
| ID | user_login | user_email |
+----+------------+----------------------+
| 2 | xxxxx | [email protected] |
+----+------------+----------------------+
SQLが無事に反映されると、上記のSQLを再度実行した際にID
が1
に変わっていると思います。
すでにプロフィールカードを設定している場合は、再度トップページをアクセスしてプロフィール情報が正しく表示されていることを確認してください。