我正在构建一个基于双工主题的基本Wordpress博客。 我想对两个帖子之后网站上有Instagram小部件的网站进行一些小的自定义,然后继续发帖。
只是为了简化页面的顺序:
首页显示设置为我想要的帖子。
如何在不影响流量的情况下在帖子之间获取Instagram小部件?
答案 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)你使用循环来获取它。但。您可以调整查询,覆盖查询或运行其他查询。
进行循环让标准循环循环。在你的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
来获取索引,但我暂时没有这样做,并且没有测试过。
希望它有所帮助!