WordPress のサイトに表示する外部データを取得するために、php スクリプトを使用しています。これは1年間問題なく機能していましたが、フロントページのいくつかの要素を再配置する必要があったとき、ループ内の投稿のサムネイルが突然表示されなくなりました.
いくつかの調査の後、ループの後にphpスクリプトを含めると投稿のサムネイルが表示されますが、ループの前に含めると投稿のサムネイルが神秘的に消えることがわかりました。
PHPログにはヒントがありません.Wordpressは、ループの前にスクリプトが含まれている場合、投稿サムネイルブロックにHTMLを生成しません.
なぜこれが起こるのか誰にも考えがありますか?そして、どうすればそれを回避できますか?
(追伸。ループの前にスクリプトを含める必要がある理由は、スタイリング/css の問題です。ループの後にスクリプトを機能させるために CSS をハッキングすることはできると思いますが、問題の原因を突き止めたいと思います。)
コードは次のとおりです。
投稿のサムネイルが表示されるはずの私のindex.php(これは機能しません):
<!-- ### This includes the php script, and works if it's placed bellow the loop/#leftcontent ### -->
<div id="rightcontent">
<?php include("rightcontentreleases.php"); ?>
</div>
<!-- ### Standard wordpress loop ### -->
<div id="leftcontent">
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="post">
<h2 class="posttitle"><a
href="<?php the_permalink() ?>"
rel="bookmark"
title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<!-- ### The post thumbnail ### -->
<a href="<?php the_permalink() ?>" ><?php if (has_post_thumbnail()) {the_post_thumbnail();}?></a>
<div class="entry">
<?php the_excerpt(); ?><a class="readmore" href="<?php the_permalink() ?>">Read more</a>
</div>
</div><!-- .post -->
<?php endwhile; else: ?><p>Sorry, no posts matched your criteria.</p><?php endif; ?>
</div><!-- #leftcontent -->
これは機能します:
<!-- ### Standard wordpress loop ### -->
<div id="leftcontent">
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="post">
<h2 class="posttitle"><a
href="<?php the_permalink() ?>"
rel="bookmark"
title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<!-- ### The post thumbnail ### -->
<a href="<?php the_permalink() ?>" ><?php if (has_post_thumbnail()) {the_post_thumbnail();}?></a>
<div class="entry">
<?php the_excerpt(); ?><a class="readmore" href="<?php the_permalink() ?>">Read more</a>
</div>
</div><!-- .post -->
<?php endwhile; else: ?><p>Sorry, no posts matched your criteria.</p><?php endif; ?>
</div><!-- #leftcontent -->
<!-- ### This includes the php script, and works if placed after the loop like this ### -->
<div id="rightcontent">
<?php include("rightcontentreleases.php"); ?>
</div>
外部スクリプトは、外部データベースを単純にループし、標準的な html を表示します。
<?php // this script connects to the external database, and defines some functions fetching the data ?>
<?php include_once("tigernet.php"); tigernetmysql(); get3upcoming(); ?>
<?php if (mysql_fetch_assoc($resultupcoming) > 0): ?>
<div class="rightcontentreleases" id="upcomingreleases">
<h2 class="head">Upcoming Releases</h2>
<?php while ($row = mysql_fetch_assoc($resultupcoming)) { ?>
<div class="onelatestrelease">
<a href="<?php bloginfo( 'wpurl' ); ?>/releases"><img class="albumartwork" src="http://media.tigernet.no/images/item/full/<?= $row["code"] ?>.jpg" /></a>
<h2 class="artist"><?= $row["artist"] ?></h2><br/>
<h3 class="title"><?= $row["title"] ?></h3><br/>
<?php if (isset($row['url'])): ?><div class="soundcloudplayer_right">
<object height='18'><param name='movie'value='http://player.soundcloud.com/player.swf?url=<?= $row['url'] ?>&auto_play=false&player_type=tiny&show_duration=false&show_user=false&show_playcount=false&font=Arial&color=92140e'>
<param name='allowscriptaccess' value='always'>
<param name='wmode' value='transparent'>
<embed wmode='transparent' allowscriptaccess='always' height='18' src='http://player.soundcloud.com/player.swf?url=<?= $row['url'] ?>&auto_play=false&player_type=tiny&show_duration=false&show_user=false&show_playcount=false&font=Arial&color=92140e' type='application/x-shockwave-flash'>
</object>
</div><?php endif; ?>
</div><!-- .onelatestrelease -->
<?php } ?>
</div><!-- #latestreleases -->
<?php endif; ?>