使‘博客’页面既显示内容又显示其下面的帖子

时间:2015-02-05 作者:user67087

我有一个叫做“博客”的页面,我想把博客页面的内容放在页面顶部作为介绍,然后放在所有帖子的列表下面。我遇到了很多问题,我不知道该怎么解决。他们在这里。。。

目前我有三篇文章,只显示了第1和第3篇(第2篇没有显示)

  • 我正在包括这些文章的节选,但第1篇没有显示任何内容,第3篇在搜索页面(search.php)上显示了该文章的正确节选。除了第1篇将博客页面本身的内容显示为其节选之外,发生了与上述相同的事情

    我正在使用以下内容(我已经删除了HTML/CSS,这样您可以更好地查看PHP,但保留了所有内容的相同布局):

    <?php wp_reset_postdata(); wp_reset_query(); ?>
    <?php if (have_posts()) : ?>
    
       <?php while (have_posts()) : the_post(); ?>
    
          <?php if ( has_post_thumbnail() ) : ?>
    
             <?php the_post_thumbnail(\'thumbs\'); ?>
    
          <?php endif; ?>
    
          <?php echo get_the_date(\'jS F Y\'); ?>
    
          <?php the_title(); ?>
    
          <?php the_post(); ?> <?php echo substr(get_the_excerpt(), 0,200); ?>
    
       <?php endwhile; ?>
    
    <?php else : ?>
    
    <?php endif; ?>
    <?php wp_reset_postdata(); wp_reset_query(); ?>
    
    有什么帮助吗?

  • 2 个回复
    最合适的回答,由SO网友:David Gard 整理而成

    编辑后的答案

    感谢您对上述内容的澄清,请尝试一下-

    Note - 此代码假定您正在使用page.php, 页面模板或其他自定义模板的变体-它在索引页面上不起作用(index.php).

    <div id="page-<?php the_ID(); ?>">
    <?php
    if (have_posts()) : while (have_posts()) : the_post();
    
            if ( has_post_thumbnail() ) :
                the_post_thumbnail(\'thumbs\');
            endif;
            
            
            echo get_the_date(\'jS F Y\');
            
            the_title();
            
            the_content();
            
        endwhile;
    endif;
    ?>
    </div>
    
    <?php
    /** Query the list of posts to display */
    $args = array(
        \'post_type\'     => \'post\',
        \'post_status\'   => \'publish\'
    );
    $posts_query = new WP_Query($args);
    ?>
    
    <div id="post-list">
    <?php
    if($posts_query->have_posts()) : while ($posts_query->have_posts()) : $posts_query->the_post();
    ?>
            <div id="<?php the_ID(); ?>" <?php post_class(); ?>>
            
                <h1 class="post-title">
                    <a href="<?php the_permalink(); ?>" title="View post \'<?php the_title_attribute(); ?>\'">
                        <?php the_title(); ?>
                    </a>
                </h1>
                
                <p class="post-content">
                    <?php echo substr(get_the_excerpt(), 0,200); ?>
                </p>
                
            </div>
    <?php
        endwhile;
    
        wp_reset_postdata();
    
    endif;
    ?>
    </div>
    
    在主循环之前/之后,您不需要wp_reset_postdata()wp_reset_query() 根本没有功能。

    然而,在二次循环之后列出帖子,就在决赛之前endif; 你只需要wp_reset_postdata().

    您将看到,我在第二个循环中添加了一些HTML,让您了解如何做到这一点-显然,您需要做一些类似于主循环的事情,以便应用样式。

    SO网友:Michael

    在代码之前,请尝试添加:

    <?php 
    if( is_home() && get_option( \'page_for_posts\' ) ) {
      $posts_page = get_post( \'get_option( \'page_for_posts\' ) );
      echo apply_filters( \'the_content\', $posts_page->post_content );
    } 
    ?>
    
    http://codex.wordpress.org/Function_Reference/is_homehttp://codex.wordpress.org/Option_Reference#Readinghttp://codex.wordpress.org/Function_Reference/apply_filters

    结束

    相关推荐

    搜索可处理多种帖子类型和类别的Pre_Get_Posts过滤器?

    我有一个允许用户搜索多个自定义帖子类型(CPT)的搜索。这很好用。但我希望查询从每个CPT中排除特定的标记。例如,包括((不包括类别X的帖子)和所有post\\u类型“doc”的CPT),它们具有给定的搜索词。我知道如何使用taxonomy$args对新的WP\\U查询对象执行此操作。。。或者是一个普通的SQL查询,但我不知道如何使用$query->set()。也许有一种方法可以提供一个完整的分类数组。。。还是原始SQL查询?add_filter(\'pre_get_posts\',\'Search