J'ai un thème hérité qui a beaucoup de fichiers de modèles de page. Mon site est trop volumineux pour parcourir chaque page une par une afin de vérifier son modèle.
Existe-t-il un moyen (en ajoutant une colonne à la liste des pages dans le backend ou directement dans la base de données) de voir quels fichiers de modèles sont utilisés et de déterminer lesquels sont en surplus?
ceci ajouterait une colonne avec le nom de fichier du modèle de page dans les "Pages" du tableau de bord:
// 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 : '-');
}
}
basé sur: https://codex.wordpress.org/Function_Reference/get_page_template_slughttps: //code.tutsplus .com/articles/ajouter-une-colonne-personnalisée-dans -postes-et-personnalisée-types-admin-écran-wp-24934
Le modèle de page est enregistré dans un champ de méta de publication appelé _wp_page_template
. Si aucun modèle n'est sélectionné, la liste déroulante affiche "Modèle par défaut", dans ce cas, la valeur du champ sera default
. Sinon, le champ méta contient le nom de fichier, par exemple. page-template.php
. Ou, si vous avez les modèles dans un sous-répertoire, par exemple. template-directory/page-templateXYZ.php
. Ainsi, vous pouvez interroger le champ non default
, en vous donnant toutes les pages utilisant des modèles. Ensuite, nous obtenons les valeurs de méta-champs pour ces pages. En fin de compte, nous nous assurons d'obtenir des résultats uniques, de sorte que chaque modèle utilisé ne s'affiche qu'une seule fois.
$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 );