WordPressのすべてのページは、ある種のテンプレートで実行されます。テンプレートがなかったら、運が悪かったでしょう。なぜなら、データはどこに行くのでしょうか?クライアントが物事を壊さないようにするために、クライアントが単にテキストなどを編集し、ページの構造に手を出さないようにテンプレートを作成します(テンプレートの作成ではそれをあなたに任せます)。
私は以前に最大10の異なるテンプレートを持つサイトを持っていました。特定のページが独自の情報アーキテクチャを持っているという理由だけで。テンプレートが必要な場合は、他に方法がない場合があるため、恐れずにテンプレートを追加してください。
これが最善のアドバイスかどうかはわかりませんが、クライアントがページテンプレートをいじり始めるのではないかと正直に心配している場合は、JavaScriptを作成して、管理者かどうかを確認します。テンプレートを変更できる要素を非表示にします。
ユーザーに特定のテンプレートを表示させたくない場合、またはユーザーに特定のテンプレートファイルを表示させたくない場合は、functions.phpにこれを配置できます。
function add_jquery_admin() {
global $parent_file;
// if editing page in WP admin and user is not an admin
if ( isset( $_GET['action'] ) && $_GET['action'] == 'edit' && isset( $_GET['post'] ) && $parent_file == 'edit.php' && !current_user_can('manage_options')) {
// remove the options for each of the templates on the template select element
echo '
<script>
var q = jQuery.noConflict();
q(function(){
q("#page_template option[value=\"template-file-name-1.php\"]").remove();
q("#page_template option[value=\"template-file-name-2.php\"]").remove();
q("#page_template option[value=\"template-file-name-3.php\"]").remove();
});
</script>
';
// get current post id
$post_id = $_GET['post'];
// if the post id 123, 1234, or 12345
if ( $post_id == 123 || $post_id == 1234 || $post_id == 12345 ) { // if on one of these post ids disable the template selector
// disable the page template select element
echo '
<script>
var j = jQuery.noConflict();
j(function(){
j("#page_template").attr("disabled", "disabled");
});
</script>
';
}
}
}
add_filter('admin_head', 'add_jquery_admin');
私はテストしませんでしたが、大丈夫だと思います。これらが表示されているテンプレートファイル名を切り替える必要があります- q("#page_template option[value=\"template-file-name-1.php\"]").remove();
。
また、テンプレートの選択要素を表示したくないページごとに、一意の投稿IDを収集する必要があります。あなたはURLを見ることによってそれを得ることができるでしょう-それはpost=200
URLのように何かを言うでしょう。これらをここに入れます- if ( $post_id == 123 || $post_id == 1234 || $post_id == 12345 )
。
これはちょっと面倒なことのように思えますが、他の解決策を考えることも見つけることもできませんでした。