私はニュースレターのWebサイトを作成していますが、各ニュースレターのランディングページはフロントページと同じテンプレートを使用しています。各ニュースレターのランディングページにフロントページのテンプレートを使用するように強制する方法はありますか。
編集者は、ニュースレターを編集するときにページ属性ボックスでテンプレート名でテンプレートを選択できますが、これをより簡単にする方法があるのではないかと思います。
前もって感謝します。
ニュースレターがカスタム投稿タイプの場合は、 テンプレート階層 を使用して専用のテンプレートを作成できます。
単一ページのテンプレートは..
single-{custom-post-type-name}.php
アーカイブページのテンプレートは..
archive-{custom-post-type-name}.php
これらのテンプレートは自動的に選択されるので、エディタのページテンプレート属性に追加する必要はありません。
以下の解決策はあなたの質問を正しく理解していればデフォルトのテンプレートをあなたが望むphpページのテンプレートに設定するでしょうが、あなたはファイルがあなたのテーマファイルにある名前を調べる必要があるでしょう。あなたはタイトルカスタム投稿タイプで述べますが、あなたの質問ではページを持っているので、私はページに基づいてこれをしました、そしてあなたがこれを投稿/カスタム投稿に変えることができるところをコメントしました。
この問題を解決するには、デフォルトのページテンプレートを定義してから、管理者以外のテンプレートの選択オプションを削除してそのセットを確認するようにします。
// This hooks into the page template and over rides the default template use this to make sure your magazine template is always default
add_filter( 'template_include', 'default_page_template', 99 );
function default_page_template( $template ) {
// Change page to post if not a page your working on or custom post type name
if ( is_singular( 'page' ) ) {
// change the default-page-template.php to your template name
$default_template = locate_template( array( 'default-page-template.php' ) );
if ( '' != $default_template ) {
return $default_template ;
}
}
return $template;
}
// removes the user page select meta-box for user roles that are not admins
add_action( 'admin_menu', 'restrict_access' );
function restrict_access() {
// if the user is not admin - you can add any user roles or multiple roles
if(!current_user_can('administrator')){
// Not tested but think this is the correct code for page template meta-box
remove_meta_box( 'pageparentdiv', 'page','normal' );
}
}