我可以显示我的站点上正在使用的所有模板文件吗?

时间:2018-01-31 作者:Thomas Talsma

我有一个传统的主题,有很多页面模板文件。我的网站太大了,无法逐个浏览每个页面来检查它的模板。

是否有任何方法(通过在后端的页面列表中添加一列,或直接在数据库中)来查看正在使用哪些模板文件并确定哪些是多余的?

2 个回复
最合适的回答,由SO网友:Michael 整理而成

这将在仪表板中的“页面”中添加一个具有页面模板文件名的列:

// 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/add-a-custom-column-in-posts-and-custom-post-types-admin-screen--wp-24934

SO网友:Nicolai Grossherr

页面模板保存到一个名为_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 );

结束

相关推荐