私はユーザープロファイル(カスタムロール:エージェントなど)をスタイルするauthor.phpテンプレートを持っています
私はブログを持っていて、編集者と寄稿者は記事を投稿することができます。
問題
ブログの閲覧者が作成者リンクをクリックして作成者アーカイブページを表示すると、ロードされるページはAuthor.phpテンプレートです。このテンプレートにはエージェントプロファイルの詳細が表示され、記事は表示されません。このauthor.phpテンプレートはEditors&Contributorsとは関係ありません。
解決策は?
どのように私はこのauthor.phpファイルをロードすることからEditor&Contributorを除外することができますか?そのようにしてユーザーがブログ投稿投稿者リンクを訪問すると、それはエージェントauthor.phpカスタムテンプレートに組み込まれた著者アーカイブページにそれらを連れて行きます
これが十分に明確であることを願って、助けてくれてありがとう!
template_include
フックを使うとどのテンプレートファイルを使うかを変更できます。
その中で、あなたはそれが要求された著者ページであるかどうか条件付きでチェックすることができ、そして要求された著者を得るためにget_query_var()
を使います。次に、作成者の役割を確認して、それが不要なものかどうかを確認し、必要であれば別のテンプレートを使用します。
以下はテストされていませんが、次のようなものです。
add_filter( 'template_include', 'myplugin_author_redirect', 99 );
function myplugin_author_redirect( $template ) {
if ( is_author() ) { // When any Author page is being displayed
// get the user page being requested
$user = get_user_by('slug', get_query_var('author_name'));
$user_role = array_shift($user->roles);
// user roles we want to redirect away
$exempt = array('editor', 'contributor');
if ( in_array($user_role,$exempt,true) ) {
// wtv file you want to load when an editors or contributor author page is requested
return locate_template( array( 'archive.php' ) );
}
}
return $template;
}