由于_Content()显示的是所有博客内容,我如何才能显示文章页面的实际内容?

时间:2020-02-18 作者:Cypher

在“设置”>“阅读”中,我设置了以下静态页面

主页:欢迎使用Blur(front page.php)

  • 帖子页面:博客帖子(home.php)
    • 我正在尝试显示博客帖子的内容

      \\u title():Blog Posts

    • the\\u content():阅读我们的模糊文章,而不是显示阅读我们的模糊文章,而是显示博客帖子的内容。

      以下是该问题的参考屏幕截图。我目前有两篇博文,如你所见,它们的内容如下所示Blog Posts 标题

      enter image description here

      我认为有一种不同的方式来获取博客帖子页面的实际内容,因为在我的代码中我使用single_post_title(\'\'); 以获取“博客帖子”作为标题。如果我使用the_title() 它将显示第二篇文章的标题“我们为什么要使用它?”。有没有single_post_content();?

      <h1><?php single_post_title(\'\'); ?></h1>
      <p>
      <?php
          if (have_posts()):
              while (have_posts()) : the_post();
                  $content = get_the_content(); 
                  echo wp_filter_nohtml_kses( $content );
              endwhile;
          else:
              echo \'<p>Oops! Something went wrong</p>\';
      endif;
      ?></p>
      
      <?php 
      // the query
      $wpb_all_query = new WP_Query(array(\'post_type\'=>\'post\', \'post_status\'=>\'publish\', \'posts_per_page\'=>-1)); ?>
      
      <?php if ( $wpb_all_query->have_posts() ) : ?>
      
      <ul>
          <!-- the loop -->
          <div>
              <?php while ( $wpb_all_query->have_posts() ) : $wpb_all_query->the_post(); ?>
                  <li>
                      <img src="<?php the_post_thumbnail_url(); ?>" alt="<?php the_title(); ?>" title="<?php the_title(); ?>">
                      <div>
                          <h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4>
                      </div>
                  </li>
              <?php endwhile; ?>
              <!-- end of the loop -->
          </div>
      </ul>
      <?php wp_reset_postdata(); ?>
      

    1 个回复
    最合适的回答,由SO网友:Sally CJ 整理而成

    您可以使用:

    1. get_queried_object_id() 获取静态帖子页面的ID。或者,您也可以使用get_option( \'page_for_posts\' ).

      $post_id = get_queried_object_id();
      //$post_id = get_option( \'page_for_posts\' ); // you should use the above on the blog page
      $content = get_the_content( null, false, $post_id );
      
    2. get_queried_object() 获取静态帖子页面的完整数据。(您将得到一个与get_post().)

      $post = get_queried_object();
      $content = get_the_content( null, false, $post ); // or you could use $post->post_content
      
    并且在posts页面上$wp_query (主查询)已包含最新/博客帖子,因此无需像$wpb_all_query 在代码中。只需使用主循环来显示帖子,就可以使用pre_get_posts hook 更改主查询,例如更改每页查询的帖子数。

    所以你的home.php 模板可以简单到:

    <?php get_header(); ?>
    
    <h1><?php single_post_title(); ?></h1>
    
    <?php
    // Display the content of the static posts Page.
    // This is just an example using setup_postdata().
    $post = get_queried_object();
    setup_postdata( $post );
    the_content();
    wp_reset_postdata();
    ?>
    
    <?php
    // Display the latest/blog posts.
    if ( have_posts() ) :
        while ( have_posts() ) : the_post(); ?>
            <h2><?php the_title(); ?></h2>
        <?php
        endwhile;
    endif;
    ?>
    
    <?php get_footer(); ?>
    

    相关推荐