web-dev-qa-db-fra.com

Afficher le contenu de la page dans la catégorie archive (archive.php)

Je suis novice dans l'édition de modèles dans wordpress et j'essaie d'obtenir une description de page sur mon site, mais elle n'apparaît pas. L'URL que j'essaie d'obtenir pour afficher la description est ici:

http://fourwallsla.com/category/the-neighborhood/east-side/

et j'ai joint la capture d'écran de la description de la page dans wordpress. Il semble utiliser le modèle d'archive (pourquoi n'utilise-t-il pas le modèle de page?).

Voici le code pour le modèle d'archive:

<?php get_header(); ?>
<div class="main">
    <!--<?php iinclude_page(17); ?>-->
    <?php
        $category = get_the_category(); 
        $catName = $category[0]->cat_name;
        $catName = strtolower($catName);

    ?>

    <?php if (have_posts()) : $first = true; ?>
        <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?>
        <?php /* If this is a category archive */ if (is_category()) { ?>
          <h1><?php single_cat_title(); ?></h1>
        <?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>
          <h1><?php single_tag_title(); ?></h1>
        <?php /* If this is a daily archive */ } elseif (is_day()) { ?>
          <h1><?php echo get_the_time('F jS, Y'); ?></h1>
        <?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
          <h1><?php echo get_the_time('F, Y'); ?></h1>
        <?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
          <h1><?php echo get_the_time('Y'); ?></h1>
        <?php /* If this is an author archive */ } elseif (is_author()) { ?>
          <h1><?php _e( 'Author Archive', 'gray_white_black' ); ?></h1>
        <?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
          <h1><?php _e( 'Blog Archives', 'gray_white_black' ); ?></h1>
        <?php } ?>

        <div>
        <?php
        switch ($catName)
        {
            case "east side":
                iinclude_page(17);
                break;
            case "downtown":
                iinclude_page(20);
                break;
            case "mid-city":
                iinclude_page(15);
                break;
            case "west side":
                iinclude_page(23);
                break;
            case "coastal":
                iinclude_page(27);
                break;
            case "valley":
                iinclude_page(25);
                break;
            default:
                iinclude_page(6);
        }
        ?>
    </div>

        <ul class="post-list">
        <?php while (have_posts()) : the_post();
            if($first) $class = "first-in-row";
            else $class="";
            $first = !$first;
            ?>
            <!-- Start: Post -->
            <li <?php post_class($class); ?>>
                <?php the_post_thumbnail(); ?>
                <p class="categories"><?php the_category(", "); ?></p>
                <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a> <?php edit_post_link(__('Edit', 'gray_white_black'), '', ''); ?></h2>

                <?php the_excerpt(); ?>
                <p class="more"><a href="<?php the_permalink() ?>"><?php _e( '&raquo;&raquo; ', 'gray_white_black' );?></a></p>
                <?php if(has_tag()): ?><p class="tags"><span><?php the_tags(""); ?></span></p><?php endif; ?>
            </li>
            <!-- End: Post -->
        <?php endwhile; ?>
        </ul>

        <p class="pagination">
            <span class="prev"><?php next_posts_link(__('&laquo; Previous Posts', 'gray_white_black')) ?></span>
            <span class="next"><?php previous_posts_link(__('Next posts &raquo;', 'gray_white_black')) ?></span>
        </p>

    <?php else : ?>
        <h2><?php _e( 'Not found', 'gray_white_black' ); ?></h2>
        <p><?php _e( 'Sorry, but you are looking for something that isn\'t here.', 'gray_white_black' ); ?></p>
        <?php get_search_form(); ?>
    <?php endif; ?>
</div>
<?php get_sidebar(); ?>

<?php get_footer(); ?>

Où, dans le code ci-dessus, the_post (), de manière appropriée, fait référence au contenu de la liste de base dans la catégorie affichée sur la page. Mais comment puis-je obtenir the_post () pour la page elle-même, comme indiqué dans la capture d'écran? Merci.

enter image description here

1
mheavers

Si vous connaissez l'ID de la page, la réponse la plus simple serait d'obtenir le contenu de la page.

// This retrieves the content from the post or page where ID = $page_id.
// You can either set this above here, or call get_the_content(12). Your choice.
$parent_page_content = get_the_content($page_id)

// Clean it up and make it a bit more legible:
$parent_page_content = str_replace(']]>', ']]&gt;', $parent_page_content);
$parent_page_content = apply_filters('the_content', $parent_page_content);

// Now echo out the content in place! <p> tags won't be necessary here, btw.
echo $parent_page_content;

Cette méthode n'interfère pas du tout avec la boucle, vous n'aurez donc pas besoin d'utiliser wp_reset_query() après cela. De plus, comme vous appliquez le filtre the_content à votre texte, il ajoutera automatiquement les balises de paragraphe et de rupture de ligne à votre place.

J'espère que cela t'aides.

1
Alex Lane

Mais comment puis-je obtenir the_post () pour la page elle-même ...?

Réponse courte:tu ne/.

Le fichier archive.php est élément de la hiérarchie des modèles WordPress } et constitue simplement un fichier template . Il n'a pas de contenu de publication propre. Il passe simplement en boucle et affiche le contenu des publications qui correspondent à la requête en cours.

Si vous souhaitez générer une description spécifique, vous devez éditer directement le fichier archive.php pour lui indiquer ce que vous souhaitez générer.

Modifier

Je souhaite afficher le contenu de la page sur un modèle de catégorie, où le nom de la catégorie est égal au nom de la page.

Vous pouvez le faire, mais ce n’est certainement pas ce qui est inhérent à WordPress. Les pages statiques et les billets de blog sont deux types de contenu totalement différents (c.-à-d. Deux types de post complètement différents) et il n’existe aucune corrélation entre les deux. WordPress n'associe tout simplement pas posts de blog qui ont un terme de taxonomie de catégorie spécifique avec une page statique qui a le même slug que ce terme de taxonomie.

Cela dit, vous pouvez associer les deux. Le processus est cependant un peu fragile.

<?php
if ( is_category() ) {
    // Get current category slug
    $cat = get_query_var( 'cat' );
    $cat_object = get_category( $cat );
    $category_slug = $cat_object->slug;

    // Get the ID of the static page with the same slub
    $category_static_page_id = get_page_by_path( $category_slug );

    // If such a page exists, get it
    if ( isset( $category_static_page_id ) ) {
        // Get the static page object
        $category_static_page = get_page( $category_static_page_id );

        // Output page content
        // Apply the usual the_content filters,
        // for usual "Nice" formatting
        echo apply_filters( 'the_content', $category_static_page->post_content );
    }
}
?>
0
Chip Bennett