web-dev-qa-db-ja.com

自分のサイトで使用されているすべてのテンプレートファイルを表示できますか?

私はたくさんのページテンプレートファイルを含むレガシテーマを持っています。私のサイトは各ページを1ページずつ見てテンプレートをチェックするには大きすぎる。

どのテンプレートファイルが使用されているかを確認し、どれが余剰であるかを判断する方法はありますか(バックエンドのページリストに列を追加するか、データベースに直接追加する)。

1
Thomas Talsma

これにより、ダッシュボードの「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

1
Michael

ページテンプレートは_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 );
1
Nicolai