Theme My Login フィールドの追加


久々に半日悩んだ仕様。
全体の設定ではログイン後はプロフィールページにリダイレクト。*Theme My Login の拡張機能ではなく、テーマ関数での設定。
ユーザーのみ閲覧可のページへのアクセスからログインした場合は、そのページへリダイレクトしたい。*プラグインは使用せず、テーマ上で分岐。

色々考えたが、テンプレートタグでのログインフォームではサイトガードの画像認証が表示されないので、Theme My Login のログインフォームにフィールドを追加してアクセスされた投稿のIDを送り、ログイン後はそのIDのパーマリンクへリダイレクトとした。

tml_add_form_field( 'login', 'id', array(
	'type' => 'hidden',
	'value' => get_the_ID(),
	'priority' => 4,
) );
if ( !is_user_logged_in() ) { echo do_shortcode( '[theme-my-login action="login"]' );
}

https://docs.thememylogin.com/article/104-function-tmladdformfield 参照

リダイレクト設定の方は if ($user->roles[0] == ‘subscriber’ && isset($_POST[‘id’])) { $id = $_POST[‘id’]; $permalink = get_permalink($id);~のような感じ。