【问题标题】:Only first post has content in loop只有第一篇文章有​​循环内容
【发布时间】:2014-10-01 12:25:30
【问题描述】:

我的 Wordpress 网站有问题: 在我的博客循环中,只有第一篇文章显示了内容;其余的 the_content(); 似乎从未被调用(用“检查元素”检查)。 我的代码有问题吗?

php/html:

<section id="blogPosts" class="clearfix"> 
<?php $myposts = get_posts('');
    foreach($myposts as $post) :
        setup_postdata($post);
    ?>
    <div id="post-&lt;?php the_ID(); ?&gt;" class="post clearfix">
        <div class="postHeader clearfix">
            <a href="&lt;?php the_permalink();?&gt;"> 
            <h2><?php the_title(); ?></h2>
            </a> 
            <h4><?php the_date(); ?></h4>
        </div>
        <div class="postTags clearfix">
            <ul class="tagContainer clearfix">
        <?php the_tags( '<li><div class="tagInline">',
                        '</div></li><li><div class="tagInline">', 
                        '</div></li>'); ?>
            </ul>
        </div>
        <div class="blogContent">
    <?php the_content();?>
        </div>
        <div class="editPost">
    <?php edit_post_link('<h4>Redigera detta inlägg', '', '</h4>'); ?>
        </div>
    <?php wp_link_pages(array('before' => 'Pages: ', 'next_or_number' => 'number')); ?>
    <?php //comments_template(); ?>
    </div>
<?php endforeach; wp_reset_postdata(); ?>
</section>

【问题讨论】:

  • get_posts('') 看起来很可疑。不应该是一个参数数组吗?
  • 知道该数组应该是什么吗?

标签: php wordpress loops


【解决方案1】:

检查所有其他帖子中是否有内容.. 帖子可以通过

<?php $posts_array = get_posts( $args ); ?> 

args 的默认用法:

<?php $args = array(
    'posts_per_page'   => 5,
    'offset'           => 0,
    'category'         => '',
    'orderby'          => 'post_date',
    'order'            => 'DESC',
    'include'          => '',
    'exclude'          => '',
    'meta_key'         => '',
    'meta_value'       => '',
    'post_type'        => 'post',
    'post_mime_type'   => '',
    'post_parent'      => '',
    'post_status'      => 'publish',
    'suppress_filters' => true ); ?>

访问所有帖子数据

<?php
$args = array( 'posts_per_page' => -1 );
$allposts = get_posts( $args );
foreach ( $allposts as $post ) :
  setup_postdata( $post ); ?>
    <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    <?php the_content(); ?>
<?php endforeach; 
wp_reset_postdata(); ?>

这是获取所有帖子的简单代码。您可以通过打印数据( print_r($post); )来检查代码,以检查您在循环中得到了什么。

【讨论】:

    【解决方案2】:

    如果您说的是在 Wordpress 阅读设置下分配给帖子的页面,您可以去掉大部分代码并简化它:

    <?php if (have_posts()): while (have_posts()) : the_post(); ?> <h2><?php the_title(); ?></h2> <?php the_content(); ?> <?php endwhile; endif; ?>

    只需在 while 语句之间添加您想要的任何信息,您就可以了。如果您想更具体,请参阅Wordpress codex

    【讨论】:

    • if (have_posts()) 是多余的,因为如果没有帖子,while(have_posts()) 将阻止内部代码运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多