使用循环从不同的div中获取WordPress发布的前几篇文章的最佳方式是什么?

时间:2013-10-02 作者:Roald Van Der Tempel

我使用循环获得了第一个帖子,但我无法获得第二个帖子。

我希望每一篇文章都有一个不同的分区,但风格与第一篇文章相同。要做到这一点,我可能需要创建更多的循环。我想这样做,这样我就可以使用jquery获得div的幻灯片。

循环的第一部分选择帖子中的第一个图像,第二部分从文本中删除图像,并使用WordPress格式显示文本。

您可以在此处找到一个示例:

http://www.volunteeringnews.com/index2.php

非常感谢您!

<div class="nto">
        <div class="natt">

            <?php
            $attachments = get_children(
                array(
                \'post_type\' => \'attachment\',
                \'post_mime_type\' => \'image\',
                \'post_parent\' => $post->ID
                ));
            if(count($attachments) > 0) { ?>
                <?php
                    $attachments = get_children(array(\'post_parent\' => get_the_ID(), \'post_type\' => \'attachment\', \'post_mime_type\' => \'image\', \'orderby\' => \'menu_order\'));
                    if ( ! is_array($attachments) ) continue;
                    $count = count($attachments);
                    $first_attachment = array_shift($attachments);
                    ?>
                    <?php echo wp_get_attachment_image($first_attachment->ID, \'medium\'); ?>

                <?php } else { ?>
                    <img src="/img/body/facebook_logo.gif">
                <?php } ?>

        </div>

<!--First post text-->

    <div class ="nfh">

        <?php

            //Show first post only
        add_filter(\'the_content\', \'narga_excerpts\');
            query_posts(\'showposts=1\');
            $ids = array();
            while (have_posts()) : the_post();
            $ids[] = get_the_ID();
            //Add remove filter first image
            function remove_first_image ($content) {
            $content = preg_replace("/<img[^>]+\\>/i", "", $content, 1);
            return $content;}
            add_filter(\'the_content\', \'remove_first_image\');
            //Get post format               
            get_template_part( \'content\', get_post_format() );
            //Remove remove filter first image
            remove_filter( \'the_content\', \'remove_first_image\' );
            remove_filter( \'the_content\', \'narga_excerpts\' );


            endwhile;
        ?>

    </div>
</div>

1 个回复
SO网友:Charles Clarkson

将此代码用于循环。我删除了您的评论,并添加了一些以供澄清。

<?php
if ( have_posts() ) {

    // Do first post.

    add_filter( \'the_content\', \'narga_excerpts\' );
    add_filter( \'the_content\', \'remove_first_image\' );

    the_post();
    get_template_part( \'content\', get_post_format() );


    // Do remaining posts.

    remove_filter( \'the_content\', \'narga_excerpts\' );
    remove_filter( \'the_content\', \'remove_first_image\' );

    while ( have_posts() ) {
        the_post();
        get_template_part( \'content\', get_post_format() );
    }
}
?>
    </div>
</div>
<?php

// Add remove filter first image.
function remove_first_image( $content ) {
    return preg_replace( \'/<img[^>]+\\>/i\', \'\', $content, 1 );
}
您没有提供足够的详细信息<div>你想用什么来包装帖子,所以我把那部分删掉了。我还删除了循环中的函数定义。将函数放在文件的底部。

结束

相关推荐

我如何控制我的帖子的HTML输出?

正如你所知,WordPress会操纵帖子,即使你把所有东西都写在Text 模式(将换行符替换为\\r\\n \'s,将单引号转换为双引号等。)我知道这有助于帮助我们不把事情搞砸,然而,在我的情况下,我想在我的帖子中加入HTML代码-两者都是<code> 和</code> 标签和一些HTML直接-。因此,我想确保我在文本模式下看到的内容(或以某种方式安装HTML模式),以便我看到的就是我得到的内容,就HTML而言:)也许对我想要的更好的解释是:我在“添加新帖子”窗口中写的应该是exa