私はたくさんのページテンプレートファイルを含むレガシテーマを持っています。私のサイトは各ページを1ページずつ見てテンプレートをチェックするには大きすぎる。
どのテンプレートファイルが使用されているかを確認し、どれが余剰であるかを判断する方法はありますか(バックエンドのページリストに列を追加するか、データベースに直接追加する)。
これにより、ダッシュボードの「Pages」にページテンプレートファイル名の列が追加されます。
// ONLY WORDPRESS DEFAULT PAGES
add_filter('manage_page_posts_columns', 'custom_admin_columns_head', 10);
add_action('manage_page_posts_custom_column', 'custom_admin_columns_content', 10, 2);
// ADD NEW COLUMN
function custom_admin_columns_head($defaults) {
$defaults['page_template_file'] = 'Page Template File';
return $defaults;
}
// SHOW THE PAGE TEMPLATE FILE NAME
function custom_admin_columns_content($column_name, $post_ID) {
if ($column_name == 'page_template_file') {
$page_template_file = get_post_meta( $post_ID, '_wp_page_template', true );
echo ($page_template_file ? $page_template_file : '-');
}
}
に基づいて: https://codex.wordpress.org/Function_Reference/get_page_template_slughttps://code.tutsplus .com/articles /投稿のカスタム列の追加およびカスタム投稿の種類の管理画面 - wp-24934
ページテンプレートは_wp_page_template
という投稿メタフィールドに保存されます。テンプレートが選択されていない場合は、ドロップダウンに「デフォルトのテンプレート」と表示され、フィールドの値はdefault
になります。そうでなければ、メタフィールドはファイル名を含みます。 page-template.php
。または、テンプレートがサブディレクトリにある場合は、 template-directory/page-templateXYZ.php
。あなたがdefault
ではないフィールドを問い合わせることができるので、テンプレートを使ってあなたのすべてのページをあなたに与えることができます。それから、それらのページのメタフィールド値を取得します。結局、私たちは独自の結果を得ることを確実にするので、使われたすべてのテンプレートは一度だけ表示されます。
$pages_with_templates = new WP_Query( [
'post_type' => 'page',
'fields' => 'ids',
'meta_query' => [[
'key' => '_wp_page_template',
'value' => 'default',
'compare' => '!='
],],
] );
$pages_with_templates_ids = $pages_with_templates->posts;
$all_templates = [];
foreach ( $pages_with_templates_ids as $id ) {
$all_templates[] = get_post_meta( $id, '_wp_page_template', true );
}
$unique_templates = array_unique( $all_templates );