显示类别存档(filve.php)中的页面内容

时间:2012-05-24 作者:mheavers

我不熟悉wordpress中的模板编辑,我正试图在我的网站上显示页面描述,但它没有出现。我试图获取的用于显示描述的URL如下所示:

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

我已经在wordpress中附上了页面描述的截图。它似乎正在使用存档模板(为什么不使用页面模板?)。

以下是存档模板的代码:

<?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(); ?>
其中,在上面的代码中,\\u post()适当地引用了页面上显示的类别中的主列表的内容。但是如何获取页面本身的\\u post(),如屏幕截图所示?谢谢

enter image description here

2 个回复
SO网友:Alex Lane

如果您知道页面ID,最简单的答案就是获取页面的内容。

// 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;
此方法根本不会干扰循环,因此不需要使用wp_reset_query() 这样做之后。此外,因为您正在应用the_content 过滤到你的文本,它会自动为你添加段落和断行标记。

希望这有帮助。

SO网友:Chip Bennett

但是如何获取页面本身的\\u post()。。。?

简短回答:you don\'t.

这个archive.php 文件为part of the WordPress Template Hierarchy, 它只是一个模板文件。它没有自己的帖子内容。它只是循环并输出与当前查询匹配的帖子内容。

如果要输出特定描述,则需要编辑archive.php 文件,告诉它您想要输出什么。

编辑我想在类别模板上输出页面内容,其中类别名称等于页面名称。

你可以这样做,但这肯定不是WordPress固有的东西。静态页面和博客帖子是两种完全不同的内容类型(即两种完全不同的帖子类型),两者之间没有相关性。WordPress只是不将具有特定类别分类术语的博客帖子与具有与该分类术语相同slug的静态页面相关联。

也就是说,你可以把两者联系起来。不过,这个过程有点脆弱。

<?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 );
    }
}
?>

结束