web-dev-qa-db-fra.com

Comment gérer un page.php manquant?

J'utilise le thème gratuit Wordpress Stargazer de Justin Tadlock.

J'essaie d'y intégrer un plugin (WooCommerce) et après avoir lu la documentation, je dois trouver le fichier page.php, copier le contenu dans un nouveau fichier appelé woocommerce.php et remplacer la boucle par la fonction woocommerce_content().

Je n'arrive pas à trouver le fichier page.php. Maintenant quoi?

2
hecktor

Le seul modèle requis dans un thème WordPress est le index.php. Et un comments.php si les commentaires sont pris en charge. Suivant la hiérarchie du modèle , tous les autres fichiers, y compris page.php, seront redescendus au index.php.

Lorsqu'un thème n'a pas de page.php, regardez le index.php. Vous y trouverez la structure de base de son contenu. Dans votre exemple, le index.php ressemble à ceci:

<?php get_header(); // Loads the header.php template. ?>

<main <?php hybrid_attr( 'content' ); ?>>

    <?php if ( !is_front_page() && !is_singular() && !is_404() ) : // If viewing a multi-post page ?>

        <?php locate_template( array( 'misc/loop-meta.php' ), true ); // Loads the misc/loop-meta.php template. ?>

    <?php endif; // End check for multi-post page. ?>

    <?php if ( have_posts() ) : // Checks if any posts were found. ?>

        <?php while ( have_posts() ) : // Begins the loop through found posts. ?>

            <?php the_post(); // Loads the post data. ?>

            <?php hybrid_get_content_template(); // Loads the content/*.php template. ?>

            <?php if ( is_singular() ) : // If viewing a single post/page/CPT. ?>

                <?php comments_template( '', true ); // Loads the comments.php template. ?>

            <?php endif; // End check for single post. ?>

        <?php endwhile; // End found posts loop. ?>

        <?php locate_template( array( 'misc/loop-nav.php' ), true ); // Loads the misc/loop-nav.php template. ?>

    <?php else : // If no posts were found. ?>

        <?php locate_template( array( 'content/error.php' ), true ); // Loads the content/error.php template. ?>

    <?php endif; // End check for posts. ?>

</main><!-- #content -->

<?php get_footer(); // Loads the footer.php template. ?>

Vous pouvez supprimer tous les codes liés à plusieurs publications et l'appel du modèle de commentaires. Et les balises et commentaires PHP inutiles ( soupirent ). Cela laisse ceci:

<?php get_header(); ?>

<main <?php hybrid_attr( 'content' ); ?>>

    <?php 
    if ( have_posts() )
    {
        while ( have_posts() )
        {
            the_post();
            hybrid_get_content_template();
        }

        locate_template( array( 'misc/loop-nav.php' ), true ); 
    }
    ?>
</main>

<?php get_footer();

Cela rend un page.php lisible et agréable. Vous pouvez maintenant remplacer hybrid_get_content_template(); par woocommerce_content(); ou selon les besoins du plug-in.

Mais attendez! Ne changez pas le thème, créez un thème enfant à la place et mettez vos modifications dans que . Maintenant, vous pouvez toujours mettre à jour le thème parent sans perdre vos personnalisations.

Vous pouvez suivre ces étapes avec chaque thème et chaque plugin. Si le index.php fonctionne, vous pouvez l’utiliser pour créer de nouveaux modèles dans un thème enfant.

1
fuxia