我已经在WordPress上阅读了多个循环的codex,但我仍然对如何做到这一点感到困惑。
我必须从默认查询中运行3个查询。
-1 =来自X类别的最新帖子
-2 = Y类别的所有帖子
-3 =除了X类别中最近的所有帖子(因为它被拉入-1)
这就是我目前设置index.php的方式:
<?php
get_header(); ?>
<?php
$args = array(
'posts_per_page' => 1,
'category_name' => 'news',
);
$news_query = new WP_Query( $args );
if ( $news_query->have_posts() ) :
?>
<?php while ( $news_query->have_posts() ) : $news_query->the_post(); ?>
<?php
$featured_img = get_the_post_thumbnail_url( $post->ID, 'full' );
$date = Date('m/y');
$title = get_the_title($post->ID);
$link = get_the_permalink($post->ID);
?>
<?php echo '<div class="recent-news-banner" style="background: url(' . $featured_img . ') no-repeat center center; background-size: cover;">'; ?>
<?php echo '<div class="container"><div class="row"><div class="col-md-8"><div class="' . 'entry-meta' . '"><div class="meta-date">' . $date . '</div><div class="meta-info"><div class="meta-title"><h2><a href="' . get_permalink() . '">' . get_the_title() . '</a></h2><div class="meta-excerpt">' . get_the_excerpt() . '</div></div></div></div></div></div>'; ?>
<?php echo '</div>'; ?>
<?php endwhile;?>
<?php else : ?>
<p><?php _e( "No News Found", 'news' ); ?></p>
<?php wp_reset_postdata(); ?>
<?php endif
?>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
$args = array(
'posts_per_page' => -1,
'category_name' => 'events',
);
$events_query = new WP_Query( $args );
echo '<div id="owl-testimonials" class="owl-theme owl-carousel container"><div class="row"><div class="col-xs-12">';
if ( $events_query->have_posts() ) :
?>
<?php while ( $events_query->have_posts() ) : $events_query->the_post(); ?>
<?php
$featured_img = get_the_post_thumbnail_url( $post->ID, 'full' );
$date = Date('F j, Y');
$title = get_the_title($post->ID);
$link = get_the_permalink($post->ID);
?>
<?php echo '<div class="event-item" style="background: url(' . $featured_img . ') no-repeat center center; background-size: cover;">'; ?>
<?php echo '<div class="meta-date">' . $date . '</div>'; ?>
<?php echo '</div>'; ?>
<?php echo '<div class="meta-info"><div class="meta-title"><h3><a href="' . get_permalink() . '">' . get_the_title() . '</a></h3></div></div>'; ?>
<?php endwhile;?>
<?php echo '</div></div></div>'; ?>
<?php else : ?>
<p><?php _e( "No News Found", 'news' ); ?></p>
<?php wp_reset_postdata(); ?>
<?php endif
?>
</main><!-- #main -->
</div><!-- #primary -->
<?php
get_footer();
我把它写成两个wp_queries但第二个不会加载到我的page上。因为这个原因,我还没有尝试过第三次。首先是默认循环的wp_query罚款?其次,我如何重做这一点,以便它不仅仅是循环工作。
答案 0 :(得分:0)
您的代码存在一些问题,但我不相信循环不正确。我能够在页面源中看到第二个循环中生成的内容;猫头鹰Carousel似乎没有被初始化。
问题1 :没有为$
分配任何内容,因此$('#owl-events').owlCarousel(...)
来电无法正常工作(实际上,它看起来并不像main.js
中的任何内容都有效。您需要让jQuery接管$
或明确使用jQuery
代替$
。
第2期:未公开divs
。在第一个循环中,你回显出9个div,但只关闭其中的8个。将它们全部堆放在一条线上时,这很容易被遗漏。你不需要echo
那些内容,你可以在页面上内嵌它们,并在需要的地方散布php,并保持一些格式,这样你就可以看到发生了什么。例如:
...
<?php while ( $news_query->have_posts() ) : $news_query->the_post(); ?>
...
<div class="recent-news-banner" style="background: url(<?= $featured_img ?>') no-repeat center center; background-size: cover;">'; ?>
<div class="container">
<div class="row">
<div class="col-md-8">
<div class="entry-meta">
<div class="meta-date"><?= $date ?></div>
<div class="meta-info">
<div class="meta-title">
<h2>
<a href="<?= get_permalink() ?>"><?= get_the_title() ?></a>
</h2>
<div class="meta-excerpt"><?= get_the_excerpt() ?></div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- uh oh, not enough closing divs -->
<?php endwhile;?>
...
可能还有其他问题,但这两个问题应该给你一个开始,让你(和我们)看到任何可能出错的东西。