web-dev-qa-db-ja.com

前後の投稿のサムネイル(特集画像)が正しく表示されていません!

このコードを使用して、前後の投稿のサムネイル(注目の画像)(ブロックと呼ばれるカスタム投稿タイプ)を表示します。

(カスタムループ)

<?php // Create and run custom loop
    $custom_posts = new WP_Query();
    $custom_posts->query('post_type=blocks&location=Front Page&section=Mainbar');
    while ($custom_posts->have_posts()) : $custom_posts->the_post();
?>  <div class="block-2 border-top">
        <h2><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
<?php endwhile; ?>

    <?php // Display previous and next posts thumbnails     
    ?>  <div class="float-left"> <?php
            $prevPost = get_previous_post();
            $prevthumbnail = get_the_post_thumbnail($prevPost->ID);
            previous_post_link('%link', $prevthumbnail);
    ?>  </div>

    <?php // Get thumbnail of next post
    ?>  <div class="float-right"> <?php
            $nextPost = get_next_post();
            $nextthumbnail = get_the_post_thumbnail($nextPost->ID);
            next_post_link('%link', $nextthumbnail);
    ?>  </div>
    </div>

これは年表です。

enter image description here

そしてこれは出力です:

  <div class="block-2 border-top">
            <h2><a href="http://localhost/wpac/?blocks=mainbar" title="Permalink to Mainbar" rel="bookmark">Mainbar</a></h2>

          <div class="float-left"> <a href="http://localhost/wpac/?blocks=mainbar-left" rel="prev"><img width="160" height="150" src="http://localhost/wpac/wp-content/uploads/2011/02/showcase2.png" class="attachment-post-thumbnail wp-post-image" alt="showcase2" title="showcase2" /></a>  </div>

          <div class="float-right"> <a href="http://localhost/wpac/?blocks=mainbar-right" rel="next"><img width="160" height="150" src="http://localhost/wpac/wp-content/uploads/2011/02/2974999772_7085da4d347.jpg" class="attachment-post-thumbnail wp-post-image" alt="2974999772_7085da4d347" title="2974999772_7085da4d347" /></a> </div>
        </div>

      <div class="block-3 border-top">
            <h2><a href="http://localhost/wpac/?blocks=sidebar" title="Permalink to Sidebar" rel="bookmark">Sidebar</a></h2>
            <a href="http://localhost/wpac/?blocks=sidebar" title="Permalink to Sidebar" rel="bookmark"><img width="160" height="150" src="http://localhost/wpac/wp-content/uploads/2011/02/2974999772_7085da4d3410.jpg" class="attachment-post-thumbnail wp-post-image" alt="2974999772_7085da4d3410" title="2974999772_7085da4d3410" /></a>
            <p></p>

            <p></p>
        </div>

私がどの投稿に所属していても構いません。 Mainbar LeftMainbar Rightのサムネイルは常に表示されます)

助言がありますか?

編集:

フルコード:

<?php
/**
 * The Template for displaying all single posts.
 *
 * @package WordPress
 * @subpackage Starkers
 * @since Starkers 3.0
 */

    get_header(); ?>

    <?php get_sidebar(); ?>

    <div id="content">
        <?php // Create and run custom loop
            $custom_posts = new WP_Query();
            $custom_posts->query('post_type=blocks&location=Work&section=Intro');
            while ($custom_posts->have_posts()) : $custom_posts->the_post();
        ?>  <div class="block-1">
                <?php the_post_thumbnail('large'); ?>
            </div>
        <?php endwhile; ?>

        <?php // Create and run custom loop
            $custom_posts = new WP_Query();
            $custom_posts->query('post_type=blocks&location=Work&section=Tagline');
            while ($custom_posts->have_posts()) : $custom_posts->the_post();
        ?>  <div class="block-2 padding-top">
                <?php the_content(); ?>
            </div>
        <?php endwhile; ?>
        <?php wp_reset_query(); ?>

        <?php // Create and run custom loop ?>
            <div class="block-2 border-top">
            <?php // Display the thumbnail of the previous post ?>
                <div class="float-left"> <?php
                    $prevPost = get_previous_post();
                    $prevthumbnail = get_the_post_thumbnail($prevPost->ID); ?>
                    <h2><?php previous_post_link('%link', 'Previous'); ?></h2>
                    <?php previous_post_link('%link', $prevthumbnail); ?>
                </div>

            <?php // Display the thumbnail of the next post ?>
                <div class="float-right"> <?php
                    $nextPost = get_next_post();
                    $nextthumbnail = get_the_post_thumbnail($nextPost->ID); ?>
                    <h2><?php next_post_link('%link', 'Next'); ?></h2>
                    <?php next_post_link('%link', $nextthumbnail); ?>
                </div>
            </div>

        <?php // Create and run custom loop
            $custom_posts = new WP_Query();
            $custom_posts->query('post_type=blocks&location=Front Page&section=Sidebar');
            while ($custom_posts->have_posts()) : $custom_posts->the_post();
        ?>  <div class="block-3 border-top">
                <h2><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
                <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_post_thumbnail(); ?></a>
                <p><?php the_excerpt(); ?></p>
                <p><?php echo get_post_meta($post->ID, "Other_Work", true); ?></p>
            </div>
        <?php endwhile; ?>

        <?php // Start the main loop
            if ( have_posts() ) while ( have_posts() ) : the_post();
        ?>  <div class="block-4 border-top">
                <?php the_content(); ?>
            </div><!-- .entry-content -->
        <?php endwhile; // end of the loop. ?>

        <?php get_sidebar('secondary'); ?>
    </div><!-- #content -->

    <?php get_footer(); ?>
4
janoChen

更新: OK。質問を変え続けると、前に書いたものを削除して最初からやり直すことができます。

正直に言うと、私はあなたがやろうとしていることについて少し混乱しています。このが(テンプレートの上部にあるコメントに基づいて)1つの投稿に表示されるため、最初の2つのカスタムループは達成するためのものです。 looksallblocksname__のサムネイルとコンテンツを印刷しているように見えます自分がどの単一の投稿にいるかに関係なく、Workname__の場所を持つ投稿。現在の単一の投稿のサムネイルとコンテンツを単に表示したい場合は、それを実行します。

注:Front Pageのカスタムループは呼び出しthe_post()を呼び出すため、グローバル$postを変更しています。サイドバーコードが元の投稿に依存しているかどうかはわかりませんが、念のためwp_reset_query()の呼び出しに固執しました。

以下は、あなたが達成しようとしていた私が考えていることですが、間違っている可能性があります:

<?php
/**
 * The Template for displaying all single posts.
 *
 * @package WordPress
 * @subpackage Starkers
 * @since Starkers 3.0
 */

    get_header(); ?>

    <?php get_sidebar(); ?>

    <div id="content">
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>

    <div class="block-1">
            <?php the_post_thumbnail('large'); ?>
        </div>

        <div class="block-2 padding-top">
            <?php the_content(); ?>
        </div>

        <div class="block-2 border-top">
            <?php // Display the thumbnail of the previous post ?>
            <div class="float-left"> <?php
                $prevPost = get_previous_post();
                $prevthumbnail = get_the_post_thumbnail($prevPost->ID); ?>
                <h2><?php previous_post_link('%link', 'Previous'); ?></h2>
                <?php previous_post_link('%link', $prevthumbnail); ?>
            </div>

        <?php // Display the thumbnail of the next post ?>
            <div class="float-right"> <?php
                $nextPost = get_next_post();
                $nextthumbnail = get_the_post_thumbnail($nextPost->ID); ?>
                <h2><?php next_post_link('%link', 'Next'); ?></h2>
                <?php next_post_link('%link', $nextthumbnail); ?>
            </div>
        </div>
<?php endif; ?>

        <?php // Create and run custom loop
            $custom_posts = new WP_Query();
            $custom_posts->query('post_type=blocks&amp;location=Front Page&amp;section=Sidebar');
            while ($custom_posts->have_posts()) : $custom_posts->the_post();
        ?>  <div class="block-3 border-top">
                <h2><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
                <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_post_thumbnail(); ?></a>
                <p><?php the_excerpt(); ?></p>
                <p><?php echo get_post_meta($post->ID, "Other_Work", true); ?></p>
            </div>
        <?php endwhile; ?>

        <?php wp_reset_query(); // I don't know if this is needed by the sidebar code. If not, you can delete this. ?>
        <?php get_sidebar('secondary'); ?>
    </div><!-- #content -->

    <?php get_footer(); ?>
1
Peter Rowell

不要なときは、2つのループを設定しているようです。 「ブロック」の投稿を表示しているテンプレート(single-blocks.phpなど)を使用している場合は、単にget_previous_postおよびget_next_post関数を使用します。

何かのようなもの:

<?php 
    the_post();
?><div class="float-left"> <?php
        $prevPost = get_previous_post();
        $prevthumbnail = get_the_post_thumbnail($prevPost->ID);
        previous_post_link('%link',''.$prevthumbnail.'');
?>  </div>

 <div class="float-right"> <?php
        $nextPost = get_next_post();
        $nextthumbnail = get_the_post_thumbnail($nextPost->ID);
        next_post_link('%link',''.$nextthumbnail.'');
?>  </div>

ループの外側にいることに気付いただけです。その場合は、1つの投稿のみを返すようにクエリを設定します。投稿IDをWP_Query引数に追加します。

2
Pabline

私はこれが必要でした:

<?php wp_reset_query(); ?>

ここに配置:

<?php endwhile; ?>
<?php wp_reset_query(); ?>

    <?php // Display post thumbnail
0
janoChen