Wordpress在帖子之间添加单独的部分,而不会影响帖子的连续性

时间:2015-11-28 05:00:58

标签: php wordpress

我正在构建一个基于双工主题的基本Wordpress博客。 我想对两个帖子之后网站上有Instagram小部件的网站进行一些小的自定义,然后继续发帖。

只是为了简化页面的顺序:

  1. 2个帖子。
  2. Instagram小部件
  3. 从第3个帖子继续。
  4. 首页显示设置为我想要的帖子。

    如何在不影响流量的情况下在帖子之间获取Instagram小部件?

3 个答案:

答案 0 :(得分:0)

你做的是运行循环两次以显示第一个帖子,重置它,然后在你的小部件之后再次启动它 - 跳过两个第一个帖子。

你可以这样做:

首先运行循环,显示两个第一个帖子。

// The Query
$the_query = new WP_Query( array( 'posts_per_page' => 2 ) );
// The Loop
if ( $the_query->have_posts() ) {
    //Display post
}

重置查询,并显示您的小部件

/* Restore original Post Data */
wp_reset_postdata();

//Your widget here.

显示下一个帖子,跳过前两个帖子。

// The Second Query
$the_query = new WP_Query( array( 'posts_per_page' => 10, 'offset' => 2  ) );
// The Loop
if ( $the_query->have_posts() ) {
    //Display post
}

答案 1 :(得分:0)

非常感谢@danjah!以下是我的代码

<?php get_header(); ?>

    <div id="content">
        <div class="posts clearfix">

            <?php if ( is_search() ) { ?>
                <h2 class="archive-title"><i class="icon-search"></i> <?php echo $wp_query->found_posts; ?> <?php _e('Results for','hyphatheme'); ?> "<?php the_search_query() ?>" </h2>
            <?php } else if ( is_tag() ) { ?>
                <h2 class="archive-title"><i class="icon-tag"></i> <?php single_tag_title(); ?></h2>
            <?php } else if ( is_day() ) { ?>
                <h2 class="archive-title"><i class="icon-time"></i> <?php echo get_the_date(); ?></h2>
            <?php } else if ( is_month() ) { ?>
                <h2 class="archive-title"><i class="icon-time"></i> <?php echo get_the_date('F Y'); ?></h2>
            <?php } else if ( is_year() ) { ?>
                <h2 class="archive-title"><i class="icon-time"></i> <?php echo get_the_date('Y'); ?></h2>   
            <?php } else if ( is_category() ) { ?>
                <h2 class="archive-title"><i class="icon-list-ul"></i> <?php single_cat_title(); ?></h2>
            <?php } else if ( is_author() ) { ?>
                <h2 class="archive-title"><i class="icon-pencil"></i> <?php echo get_userdata($author)->display_name; ?></h2>
            <?php } ?>

            <?php
            if ( have_posts()) :
                while ( have_posts() ) : the_post();

                    /*
                     * Include the post format-specific template for the content. If you want to
                     * use this in a child theme, then include a file called called content-___.php
                     * (where ___ is the post format) and that will be used instead.
                     */      
                    get_template_part( 'content', get_post_format() );

                endwhile;
             else:

                /*
                 * If no posts are found in the loop, include the "No Posts Found" template.
                 */
                get_template_part( 'content', 'none' );

            endif;
            ?>

        </div><!--END .posts-->

        <?php if ( hypha_page_has_nav() ) : ?>
            <!-- post navigation -->
            <?php $post_nav_class = ( get_option( 'hypha_customizer_infinite_scroll' ) == 'enable' ) ? ' infinite' : '' ; ?>
            <div class="post-nav<?php echo $post_nav_class; ?>">
                <div class="post-nav-inside clearfix">
                    <div class="post-nav-previous">
                        <?php previous_posts_link(__('<i class="icon-arrow-left"></i> Newer Posts', 'hyphatheme')) ?>
                    </div>
                    <div class="post-nav-next">
                        <?php next_posts_link(__('Older Posts <i class="icon-arrow-right"></i>', 'hyphatheme')) ?>
                    </div>  
                </div>
            </div>
        <?php endif; ?>

        <?php if ( is_single() ) { ?>
            <!-- comments template -->
            <?php if ( 'open' == $post->comment_status ) : ?>
                <?php comments_template(); ?>
            <?php endif; ?>
        <?php } ?>



    </div><!--END #content-->

答案 2 :(得分:0)

一种方法是提到的那个是@danjah,你在页面上创建一个二级循环来获得前两个帖子。由于你是wordPress的新手,让我们从头开始。

您的所有模板都围绕循环循环适用于页面上已定义的查询。 wordPress有各种默认查询,具体取决于其加载的模板(帖子,档案,单个帖子,页面,索引)

所以a)wordpress根据你所在的路线定义查询,b)你使用循环来获取它。但。您可以调整查询,覆盖查询或运行其他查询。

WP_Query

进行循环

让标准循环循环。在你的index.php中你可能有类似的东西:

 <!-- Start the Loop. -->
 <?php if ( have_posts() ) : 
     while ( have_posts() ) : 
         the_post(); ?>

     <!-- use markup or template helpers in here -->

     <?php endwhile;
  endif; ?>

虽然您可以在主循环之前运行辅助查询,但是插入您想要的东西,然后更改主循环以跳过前两个,第二种方式是,而不是创建另一个循环并更改主循环,为什么不保持计数。你可以用你增加的变量(它只是一个标准的php while循环)来做到这一点,但我相信你也可以从全局$ wp_query对象中获取当前的post索引。

 $index = 1;
 <!-- Start the Loop. -->
 <?php if ( have_posts() ) : 
     while ( have_posts() ) : 
         the_post(); ?>

     <!-- use markup or template helpers in here -->
     <?php if ($index == 2) : ?>

       <!-- do something after the second post -->

     <?php endif; ?>

     <!-- increment the index -->
     $index++;
     <?php endwhile;
  endif; ?>

我相信你也可以使用$wp_query->current_post来获取索引,但我暂时没有这样做,并且没有测试过。

希望它有所帮助!