featured content galleryプラグインを改造

featured content galleryプラグインを改造

任意のページにフォトギャラリーを追加してくれる便利なプラグイン
「Featured content gallery」

簡単にスライドショーを実現できる
とても優秀なプラグインなのですが
Wordpressの「サイトのアドレス(URL)」を変更すると
うまく稼動してくれません。

つまり
Wordpressのアドレス
http://www.hoge.com/wp/に対し
サイトのアドレス
http://www.hoge.com/と設定してしまうと
画像が表示できなくなってしまうわけです。

書き出されたソースを見てみると
プラグインのスクリプト自体は稼動していても
ターゲットの画像が抽出できていない様子。

あれやこれやとphpファイルを吟味した結果
おそらくquery_postsが悪影響を及ぼしているのではないかと予想。
query_postsはwordpressのメインループを書き換える関数です。
featured content galleryではメインループ($wp_query)を、
わざわざ他の変数に退避(代入)してメインループを書き換えている様子。

そんなことをするよりはサブループを作るget_postsを使ったほうが良いじゃないかと

gallery.phpの以下のソースコードにあるquery_postsをget_postsに変更しました。

<?php $temp_query = $wp_query; ?>
<?php query_posts('category_name=' . get_option('gallery-category') . '&showposts=' . get_option('gallery-items')); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
	<div class="imageElement">
	<h2><?php the_title() ?></h2>
	<?php 
			if(get_option('gallery-use-featured-content')) {?>
		 <p><?php $key="featuredtext"; echo get_post_meta($post->ID, $key, true); ?></p>
		  <?php 
		  } else {
		  ?>
		 <p><?php the_content_rss('', 0, '', $wordquantity); ?></p>
		  <?php
			}
			?>
		  <a href="<?php the_permalink() ?>" title="Read More" class="open"></a>
		  <img src="<?php $key="articleimg"; echo get_post_meta($post->ID, $key, true); ?>" alt="<?php $key="alttext"; echo get_post_meta($post->ID, $key, true); ?>" class="full" />
		  <img src="<?php $key=$imgthumb; echo get_post_meta($post->ID, $key, true); ?>" alt="<?php $key="alttext"; echo get_post_meta($post->ID, $key, true); ?>" class="thumbnail" />
	</div>
	<?php endwhile; else: ?>
<?php endif; ?>
<?php $wp_query = $temp_query; ?>

これを

$list_posts = get_posts(array(
	'numberposts' => get_option('gallery-items'),
	'category_name' => get_option('gallery-category'),
));
foreach ($list_posts as $post) { ?>
	<div class="imageElement">
	<h2><?php the_title() ?></h2>
	<?php 
		if(get_option('gallery-use-featured-content')) {?>
		<p><?php $key="featuredtext"; echo get_post_meta($post->ID, $key, true); ?></p>
		<?php 
		} else {
		?>
		<p><?php the_content_rss('', 0, '', $wordquantity); ?></p>
		<?php
		}
		?>
		<a href="<?php the_permalink() ?>" title="Read More" class="open"></a>
		<img src="<?php $key="articleimg"; echo get_post_meta($post->ID, $key, true); ?>" alt="<?php $key="alttext"; echo get_post_meta($post->ID, $key, true); ?>" class="full" />
		<img src="<?php $key=$imgthumb; echo get_post_meta($post->ID, $key, true); ?>" alt="<?php $key="alttext"; echo get_post_meta($post->ID, $key, true); ?>" class="thumbnail" />
	</div>

こんな感じに

これで求める動作を得ることができました。

Comments

Facebook Comments

ページトップへ