特定のカテゴリのブログ投稿を検索しています(テンプレートページのスラッグに従って、各投稿にスライダー、タイトル、およびコンテンツを出力させたい)。WordpressプラグインAnythingslider for Wordpressを使用しています。すべて自動化されてコピー&ペーストが少なくなるようにポストがずれる - しかしdo_shortcode行を追加すると、それぞれのポストを表示するのではなく、同じポストを(ポストの数だけ)複製します!
誰かアイデアがありますか?
<?php
$args = array(
'post_type' => 'post',
'category_name' => $post->post_name,
'showposts' => 20,
);
$the_query = new WP_Query( $args );
$page_id = get_the_ID();
$page_object = get_page( $page_id ); ?>
<div class="project-column">
<h4><?php echo $page_object->post_content; ?></h4>
<h1>Title</h1>
<div id="navigation">
<?php if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<a href="#<?php echo $post->post_name; ?>"><?php the_title(); ?></a>
<?php endwhile; wp_reset_postdata(); ?>
<?php endif; ?>
</div>
</div>
<?php if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<div id="<?php echo $post->post_name; ?>"></div>
<div class="entry-container">
<div class="slider-container">
<?php $shortcode = do_shortcode('[anything_slides cat='.$post->post_name.']');
echo apply_filters('my_new_filter',$shortcode); ?>
</div>
<div class="project-column">
<h2><?php the_title(); ?></h2>
<?php echo the_content(); ?>
<hr>
</div>
</div>
<?php endwhile; wp_reset_postdata(); ?>
<?php endif; ?>
ループの外側で$post_slug
を設定するので、値は変更されません。ループが進むにつれて順番に各投稿にリセットされるように、insideLoopをリセットする必要があります。
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
$post_slug = $post->post_name;
echo do_shortcode("[anything_slides cat=".$post_slug."]");
}
}
しかし、変数を設定する必要はまったくありません。 $post->post_name
を使うだけです。