Pro webové stránky je nezřídka potřebné připravit několik variant šablony, například pro „landing page“, jež nemá navigaci a používá zjednodušenou patičku. Občas se mi hodí i trochu jiná varianta pro domovskou stránku a stránky fungující jako „rozcestníky“.
Může však nastat moment, kdy je potřebné něco změnit a hodí se seznam, kdy tvůrce obsahu použil některé z variant šablon.
K výsledku je snadné se dopátrat přímo v databázi:
SELECT
`t1`.`id`,
`t1`.`post_title`,
`t1`.`post_status`,
`t1`.`post_type`,
`t2`.`meta_value`
FROM
`wp_posts` AS `t1`
LEFT JOIN `wp_postmeta` AS `t2`
ON `t1`.`id`=`t2`.`post_id`
WHERE
`t2`.`meta_key` = '_wp_page_template'
AND `t2`.`meta_value`<>'default';
Pokud nechcete číst výsledky SQL dotazu, ale chcete trochu přehlednější formu, můžete si do souboru functions.php
, v odvozené šabloně, přidat krátký kousek kódu, jehož výstup získáte doplněním adresy webu o parametr ?used_temps
(např: example.com/?used_temps ).
add_action( 'wp', function ( $file = false ) {
if ( ! isset( $_GET['used_temps'] ) ) return;
$temps = wp_get_theme()->get_page_templates();
$report = array();
echo '<h1>Seznam šablony</h1>';
echo "<h2>Seznam využitých šablon:</h2>";
foreach ( $temps as $file => $name ) {
$q = new WP_Query( array(
'post_type' => 'page',
'posts_per_page' => -1,
'meta_query' => array( array(
'key' => '_wp_page_template',
'value' => $file
) )
) );
$page_count = sizeof( $q->posts );
if ( $page_count > 0 ) {
echo '<p style="color:green">' . $file . ': <strong>' . sizeof( $q->posts ) . '</strong> stránky, které ji používají:</p>';
echo "<ul>";
foreach ( $q->posts as $p ) {
echo '<li><a href="' . get_permalink( $p, false ) . '">' . $p->post_title . '</a></li>';
}
echo "</ul>";
unset($temps[$file]);
}
foreach ( $q->posts as $p ) {
$report[$file][$p->ID] = $p->post_title;
}
}
if(count($temps) > 0) {
echo('<h2>Nevyužité šablony (Zatím? Smazat?)</h2>');
echo('<ul>');
foreach ( $temps as $file => $name ) {
echo '<li style="color:red">' . $file . '</li>';
}
echo('</ul>');
}
exit;
} );
Funkci přidávám do scriptu functions.php jen dočasně. Nenechal bych ji trvale na stránkách zákazníka.
Tento sniplet mám v archivu delší dobu, není z mé hlavy, ale bohužel nejsem schopen odkázat na původní zdroj.
Napsat komentář